功能等同于Python语句逻辑

时间:2011-01-22 21:29:02

标签: python scripting

我试图在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语句逻辑的行为完全匹配的函数?

1 个答案:

答案 0 :(得分:9)

函数operator.and_operator.or_分别等效于按位“和”函数和“或”函数。 and中没有代表oroperator运算符的函数,但您可以使用内置函数any()all()。它们将单个序列作为参数,但您可以简单地传递两个条目的元组以将它们用作二元运算符。

请注意,无法将andor的逻辑与您调用的任何函数完全匹配。例如

False and sys.stdout.write("Hello")

永远不会打印任何东西,而

f(False, sys.stdout.write("Hello"))
无论如何定义f()

将始终打印输出。这也是operator中省略它们的原因。