python-为什么这种“与或”三元表达式语法有效?
作者:互联网
我最近一直在学习和使用Python,并且遇到了以下代码,有人告诉我这是Python中三元表达式的常见缩写:
x = condition and expression1 or expression2
现在我已经熟悉了? :类似于C语言的运算符,如果条件为expression2,则使用Python的通常三元表达式x = expression1,但是这个新表达式对我来说有点奇怪.
我感到困惑的部分原因是它似乎不太可读,即当我读到该行时并不能立即弄清楚发生了什么,而另一部分是我不太明白它为什么起作用.
总结:为什么上述表达式与C类三元表达式的功能相同?
解决方法:
当且仅当左操作数为true时,and运算符才计算其右操作数(expression1).同样,当且仅当其左操作数为false时,or运算符才计算其右操作数(表达式2).
因此,如果条件为true,则将对expression1求值.假设它评估为真,表达式条件和expression1将为真,因此将不对expression2进行评估.
如果条件为假,则不对expression1求值,并且条件和表达式1为假.因此,将对expression2进行评估.
唯一的问题是条件为真,但expression1的计算结果是虚假的.在那种情况下,expression1和expression2都将被评估.因此,当有可能时,此构造将被破坏.
标签:ternary-operator,python 来源: https://codeday.me/bug/20191029/1961690.html