我正在尝试在 Python 中找到逻辑语句的功能等价物(例如和/或/不)。我以为我在 operator
模块中找到了它们,但行为却大不相同。
例如,and
语句执行我想要的行为,而 operator.and_
似乎需要显式类型比较,否则它会抛出 TypeError 异常。
>>> from operator import *
>>> class A: pass
...
>>> and_(A(), True)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for &: 'instance' and 'bool'
>>> A() and True
True
是否有类似 operator
模块的东西,但包含与 Python 语句逻辑行为完全匹配的函数?
最佳答案
operator.and_
和operator.or_
函数等同于位“与”函数和“或”函数, 分别。 operator
中没有表示and
和or
运算符的函数,但是您可以使用内置函数any()
和 all()
代替。它们将采用单个序列作为参数,但您可以简单地传递两个条目的元组以将它们用作二元运算符。
请注意,不可能将 and
和 or
的逻辑与您调用的任何函数完全匹配。例如
False and sys.stdout.write("Hello")
永远不会打印任何东西,而
f(False, sys.stdout.write("Hello"))
将始终打印输出,无论 f()
是如何定义的。这也是 operator
中省略它们的原因。
关于python - 功能等同于 Python 语句逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4770727/