为什么操作员模块没有逻辑或功能?

max*_*max 11 python bitwise-operators python-3.x

在Python 3中,operator.or_等效于按位|,而不是逻辑or.为什么逻辑没有运算符or

Pet*_*rin 19

orand运营商不能表示为,因为它们的功能短路行为:

False and some_function()
True or some_function()
Run Code Online (Sandbox Code Playgroud)

在这些情况下,some_function()永远不会被称为.

or_(True, some_function())另一方面,假设必须调用some_function(),因为函数参数总是在调用函数之前进行求值.


phi*_*hag 7

逻辑或是控制结构 - 它决定代码是否正在执行.考虑

1 or 1/0
Run Code Online (Sandbox Code Playgroud)

这并不会引发错误.

相比之下,下面抛出一个错误,不管功能如何实现的:

def logical_or(a, b):
  return a or b
logical_or(1, 1/0)
Run Code Online (Sandbox Code Playgroud)