Python三目运算符(三元运算符)用法详解

Python可以通过 if 语句可以实现三目运算符的功能,因此这种if语句可以近似地被视为三目运算符。作为三目运算符 if 语句的语法格式如下:
True_statementsifexpressionelseFalse_statements
三目运算符的规则是:逻辑表达式首先 expression 如果逻辑表达式返回求值, True,执行并返回 True_statements 如果逻辑表达式返回值; False,执行并返回 False_statements 值。查看以下代码:
a=5 b=3 st="a大于b"ifa>belse"a不大于b" #输出"a大于b" print(st)
事实上,如果只是为了在控制台上输出提示信息,也可以将上述三目运算符表达式改为以下形式:
#输出"a大于b"
print("a大于b")ifa>belseprint("a不大于b")Python 三目运算符允许 True_statements 或 False_statements 多个句子放在中间。Python 主要支持以下两种放置方式:
多个句子用英文逗号分开:每个句子都会执行,程序返回由多个句子返回值组成的元组。
多个句子用英文分号分开:每个句子都会执行,程序只返回第一个句子的返回值。
先看第一种情况,使用以下代码:
#第一个返回值部分使用两个句子,逗号分开
st=print("crazyit"),'a大于b'ifa>belse"a不大于b"
print(st)上面程序中 True_statements 为 print("crazyit"),'a大于b',这两个句子都将执行,程序将返回由这两个句子的返回值组成的元组。因为 print() 函数没有返回值,相当于它的返回值 None。操作上述代码,将看到以下结果:
crazyit (None,'a大于b')
若将上述句子中的逗号改为分号,则将逗号后的句子改为赋值句,即写成以下形式:
#第一个返回值部分使用两个句子,分号分开
st=print("crazyit");x=20ifa>belse"a不大于b"
print(st)
print(x)此时虽然 True_statements 它包含两个句子,但程序只会返回第一个句子 print(”crazyit”) 该句子的返回值也返回 None,因此相当于 str 的返回值为 None。操作上述代码,将看到以下结果:
crazyit None 20
需要指出的是,三目运算符支持嵌套,可以通过嵌套三目运算符进行更复杂的判断。例如,需要判断以下代码 c、d 两个变量之间的大小关系:c=5
d=5
#下面将输出c等于d
print("c大于d")ifc>delse(print("c小于d")ifc<delseprint("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”的情况,字符串自然会输出。
