Ros*_*hta 5 python boolean python-2.7
我是Python的新手,在尝试Python逻辑语句的时候.我遇到过这个我无法理解的问题.任何人都可以告诉我在Python 2.7中发生了什么.在Python中,0和False值之间的区别是什么.
>>> 0 or False False >>> False or 0 0
为什么口译员会给出不同的答案?
您对or操作员的行为感到困惑; 它返回第一个表达式,只有它是一个真值; 既不是0也不False是,所以返回第二个值:
>>> 0 or 'bar'
'bar'
>>> False or 'foo'
'foo'
Run Code Online (Sandbox Code Playgroud)
任何非数字0的值,空容器None或被False认为是真的(自定义类可以通过实现__bool__方法(python 3),__nonzero__(python 2)或__len__(length 0为空)来改变它.
如果第一个表达式是True:
>>> True or 1 / 0
True
Run Code Online (Sandbox Code Playgroud)
该1 / 0表达式会引发ZeroDivision异常,但甚至不会被Python评估.
这在布尔运算符文档中有记录:
表达式
x or y首先评估x; 如果x为真,则返回其值; 否则,y将评估并返回结果值.
同样,and如果是False,则返回第一个表达式,否则返回第二个表达式.
| 归档时间: |
|
| 查看次数: |
236 次 |
| 最近记录: |