全部。
我正在运行一个简单的 python 程序,我发现当我使用 followees = self.followee.get(userId, set()) | set([userId])
时,它通过了测试。但是,如果我使用 followees = self.followee.get(userId, set()) or set([userId])
,则没有。
因此,显然,这两个运算符在方程之间存在一些差异。有谁知道发生了什么?
谢谢!
最佳答案
对于集合(这里是你的操作数),|
返回两个集合(操作数)的并集,而 or
运算符返回第一个真操作数(非空集)或最后一个,如果所有操作数都是假的——使 or
成为短路运算符。
考虑以下示例:
>>> set([1,2,3]) | set([4])
set([1, 2, 3, 4])
>>> set([1,2,3]) or set([4])
set([1, 2, 3])
>>> set([1,2,3]) or set([])
set([1, 2, 3])
>>> set([1,2,3]) | set([])
set([1, 2, 3])
请注意,对于两个操作数,如果至少有一个操作数为假,则
|
和 or
都会给出相同的结果。or
的行为对于所有对象都是一致的,而 |
的行为会有所不同,具体取决于操作数如何实现 __or__
或 __ror__
魔术方法,例如用作按位或整数类型和 collections.Counter
对象的 [max-] 联合。关于Python: "|"和 "or"在方程中的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44991986/