Python 可经过 if 语句来实现三目运算符的功能,所以能够近似地把这种 if 语句当成三目运算符。做为三目运算符的 if 语句的语法格式以下:python
True_statements if expression else False_statements
三目运算符的规则是:先对逻辑表达式 expression 求值,若是逻辑表达式返回 True,则执行并返回 True_statements 的值;若是逻辑表达式返回 False,则执行并返回 False_statements 的值。看以下代码:express
a = 5 b = 3 st = "a大于b" if a > b else "a不大于b" # 输出"a大于b" print(st)
实际上,若是只是为了在控制台输出提示信息,还能够将上面的三目运算符表达式改成以下形式:函数
# 输出"a大于b" print("a大于b") if a > b else print("a不大于b")
Python 容许在三目运算符的 True_statements 或 False_statements 中放置多条语句。Python 主要支持如下两种放置方式:spa
先看第一种情形,使用以下代码:.net
# 第一个返回值部分使用两条语句,逗号隔开。加上()标识更清晰 st = (print("crazyit"), 'a大于b' if a > b else "a不大于b") print(st)
上面程序中 True_statements 为 print("crazyit"),'a大于b',这两条语句都会执行,程序将会返回这两条语句的返回值组成的元组。因为 print() 函数没有返回值,至关于它的返回值是 None。运行上面代码,将看到以下结果:code
crazyit (None,'a大于b')
若是将上面语句中的逗号改成分号,将逗号以后的语句改成赋值语句,即写成以下形式:字符串
# 第一个返回值部分使用两条语句,分号隔开 st = print("crazyit"); x = 20 if a > b else "a不大于b" print(st) print(x)
此时虽然 True_statements 包含两条语句,但程序只会返回第一条语句 print(”crazyit”) 的返回值,该语句一样返回 None,所以至关于 str 的返回值为 None。运行上面代码,将看到以下结果:get
crazyit None 20
须要指出的是,三目运算符支持嵌套,经过嵌套三目运算符,能够执行更复杂的判断。例如,下面代码须要判断 c、d 两个变量的大小关系:it
c = 5 d = 5 # 下面将输出c等于d print("c大于d") if c > d else (print("c小于d") if c < d else print("c等于d"))
上面代码首先对 c>d 求值,若是该表达式为 True,程序将会执行并返回第一个表达式:print(”c大于d”);不然系统将会计算 else 后面的内容:(print("c小于d") if c < d else print("c等于d")),这个表达式又是一个嵌套的三目运算符表达式。注意,进入该表达式时只剩下“c小于d”或“c等于d”两种状况,所以该三目运算符再次判断 c<d,若是该表达式为 True,将会输出“c小于d”;不然只剩下“c等于d”一种状况,天然就输出该字符串了。io