python - 功能等同于 Python 语句逻辑

标签 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 语句逻辑行为完全匹配的函数?

最佳答案

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

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

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

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

f(False, sys.stdout.write("Hello"))

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

关于python - 功能等同于 Python 语句逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4770727/

相关文章:

python - 使用Beautiful Soup刮过YouTube验证徽章的实例吗?

Python optparse make_option() 相当于 argparse

python - 同时忽略 pylint 和 Flake8 的一行

javascript - 使用 API 和 Python 查找所有可能的字母组合

python - 即使安装了 Plotly.io 也看不到 psutil 包

python - 如何将有效数字的数量限制为*不超过* str.format() 或 f-strings?

php - HTTP 请求结束后,PHP 脚本还能继续运行吗?

powershell - Hyper-V脚本无法识别远程虚拟机

linux - 使用 awr Linux Red Hat 从文件中列出字符串

Bash:内存泄漏是否适用于 UNIX 中的 bash 脚本?