gpt4 book ai didi

python - 如何理解Python中 `None or False`、 `False or None`、 `None and False`、 `False and None`的结果?

转载 作者:太空宇宙 更新时间:2023-11-04 09:50:49 28 4
gpt4 key购买 nike

我以为我理解了 Python 中的这两个单例值,直到我看到有人在代码中使用 return l1 or l2,其中 l1 和 l2 都是链表对象,并且(s)他想如果不为 None 则返回 l1,否则返回 l2。

这段代码很好,因为它很短而且看起来很容易理解。然后,我编写了一些代码来弄清楚这里发生了什么。

print ( True or 'arbitrary' ) #True
print ( False or 'arbitrary') #arbitrary
print ( None or 'arbitrary' ) #arbitrary

打印结果符合预期。但是,当我尝试将 NoneFalse 放在一起时。确实发生了一些奇怪的事情。

print ( False or None ) #None
print ( None or False ) #False
print ( None or False or True) #True

所以,我猜 return A or B 的规则是:

  • 按顺序返回第一个 True(不是 None,不是 False)值(先是 A,然后是 B)

  • 如果没有真值,则返回最后一个值。

最后,我运行这段代码来验证我的猜测。

print ( None or False or True or None) # True
print ( None or False or None) # None
print ( False or None or False) # False

结果似乎证明了我的理论。但是谁有更多的解释?

此外,当我使用 时,我得到了一些有趣的东西。为什么?

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

关于python - 如何理解Python中 `None or False`、 `False or None`、 `None and False`、 `False and None`的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47879272/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com