Python的赋值语句,有一种带条件判断的语法,将赋值和条件判断融为一行代码,使需要条件判断的赋值代码写起来更加简练高效,与C语言中的 ?: 语法一样。这种赋值语句中的条件判断,可以是if判断,也可以是or和and判断。
赋值语句中的if
请看下面的代码示例:
>>> a = 123 if True else 321 >>> a 123 >>> a = 123 if False else 321 >>> a 321
以上代码,给变量a赋值,如果if True,a的取值就是if前面的那个值,如果if False,a的取值就是else后面的值。以上代码写的比较简单,实际情况下if判断可以写的很复杂,而且还可以嵌套:
>>> a = 1 >>> b = 2 >>> c = 2 if a==2 else 3 if b==2 else 4 >>> c 3 >>> c = 2 if a==2 else 3 if b!=2 else 4 >>> c 4 >>> c = 2 if a==1 else 3 if b!=2 else 4 >>> c 2
赋值语句中的and和or
先看代码吧:
>>> a = 10 or 20 >>> a 10 >>> a = 10 and 20 >>> a 20 >>> b = 0 or 1 >>> b 1 >>> b = 0 and 1 >>> b 0
这种语法在python中叫“短路运算符”,属于python的布尔操作。下面总结一下赋值语句中and和or的语法规则:
表达式从左至右运算,若or 的左侧逻辑值为 True ,则短路 or 后所有的表达式(不管是 and 还是 or),直接输出 or 左侧表达式 。表达式从左至右运算,若and 的左侧逻辑值为 False ,则短路其后所有 and 表达式,直到有 or 出现,输出 and 左侧表达式到 or 的左侧,参与接下来的逻辑运算。若or 的左侧为 False ,或者 and 的左侧为 True 则不能使用短路逻辑。
其实跟条件判断是一样的,对于or,从左到右找第一个True,如果都是False,就取最后一个为False的值;对于and,从左到右找第一个False,如果都是True,就取最后一个为True的值。请看下面代码: