<分区>
在operator
模块中,我们有or_
函数,which is the bitwise or (|
)。
但是我似乎找不到逻辑或(或
)。
我想知道为什么不包括在内?算不算运营商?
是否有提供其行为的内置函数?
<分区>
在operator
模块中,我们有or_
函数,which is the bitwise or (|
)。
但是我似乎找不到逻辑或(或
)。
我想知道为什么不包括在内?算不算运营商?
是否有提供其行为的内置函数?
最佳答案
or
运算符短路;当左侧表达式返回真值时,右侧表达式不会被计算。这也适用于 和
运算符;当左侧表达式返回假值时,不对右侧表达式求值。
你不能用一个函数来做到这一点;所有操作数必须在函数被调用之前被评估。因此,operator
模块中没有对应的函数。
比较:
foo = None
result = foo and foo(bar)
与
foo = None
result = operator.boolean_and(foo, foo(bar)) # hypothetical and implementation
后一个表达式将失败,因为您不能将 None
用作可调用对象。第一个版本有效,因为 and
运算符不会计算 foo(bar)
表达式。
关于python 或运算符(operator)模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22385108/