全部。
我正在运行一个简单的 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/

10-16 08:46