功能等同于Python语句逻辑

Cer*_*rin 3 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
Run Code Online (Sandbox Code Playgroud)

有类似于operator模块的东西,但是包含与Python语句逻辑的行为完全匹配的函数吗?

Sve*_*ach 9

函数operator.and_和函数operator.or_分别等同于按 "和"函数和"或"函数.有代表没有的功能and,并or在运营商operator,但您可以使用内置插件any()all()代替.它们将单个序列作为参数,但您可以简单地传递两个条目的元组以将它们用作二元运算符.

请注意,这是不可能匹配的逻辑and,并or恰与调用任何功能.例如

False and sys.stdout.write("Hello")
Run Code Online (Sandbox Code Playgroud)

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

f(False, sys.stdout.write("Hello"))
Run Code Online (Sandbox Code Playgroud)

无论如何f()定义,都将始终打印输出.这也是它们被省略的原因operator.