我以为我理解了 Python 中的这两个单例值,直到我看到有人使用return l1 or l2
代码中,l1和l2都是链表对象,如果l1不为None则返回l1,否则返回l2。
这段代码很好,因为它很短并且看起来很容易理解。然后,我编写一些代码来弄清楚这里发生了什么。
print ( True or 'arbitrary' ) #True
print ( False or 'arbitrary') #arbitrary
print ( None or 'arbitrary' ) #arbitrary
打印结果符合预期。但是,当我尝试把None
and False
一起。发生了一些非常奇怪的事情。
print ( False or None ) #None
print ( None or False ) #False
print ( None or False or True) #True
所以,我猜规则return A or B
are:
最后,我运行这段代码来验证我的猜测。
print ( None or False or True or None) # True
print ( None or False or None) # None
print ( False or None or False) # False
结果似乎证明了我的理论。但有人有更多解释吗?
另外,当我使用时我得到了一些有趣的东西and
. Why?
print ( None and False) #None
print ( False and None) #False
简而言之,“and”返回第一个假值或最后一个真值,“or”返回第一个真值或最后一个假值。
>>> None or False
False
>>> False or None
>>> False and None
False
>>> None and False
...
>>> 0 or 3 or 4
3
>>> 5 and 0 and 6
0
>>> 5 and 0 or 6
6
>>> False or {} or 0
0
>>> 3 and 4 and 5
5
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)