sho*_*qie 6 python syntax ternary-operator
在Java或C中,我们将<condition> ? X : Y其转换为Python X if <condition> else Y.
但也有这个小技巧:<condition> and X or Y.
虽然我明白,这是相当于前述三元运营商,我觉得很难把握如何and和or运营商能够产生正确的结果.这背后的逻辑是什么?
虽然我知道它相当于前面提到的三元运算符
这是不正确的:
In [32]: True and 0 or 1
Out[32]: 1
In [33]: True and 2 or 1
Out[33]: 2
Run Code Online (Sandbox Code Playgroud)
为什么第一个表达式返回1(即Y),而条件是True和"预期"答案是0(即X)?
根据文件:
表达式x和y首先计算x; 如果x为false,则返回其值; 否则,将评估y并返回结果值.
表达式x或y首先评估x; 如果x为真,则返回其值; 否则,将评估y并返回结果值.
因此,True and 0 or 1计算and运算符的第一个参数,即True.然后它返回第二个参数,即0.
由于True and 0返回false值,or运算符返回第二个参数(即1)