0

我很惊讶在运算符模块中找不到布尔(不是按位)和运算符:

http://docs.python.org/2/library/operator.html

为什么呢?有解决方法吗?

4

2 回答 2

6

Pythonandor运算符懒惰地评估它们的表达式,允许您使用如下表达式:

function_object and function_object(some, arguments)
some_value or produce_new_value(expensive, call)

安全。

这使它们失去了operator治疗的资格,因为您必须在将表达式传递给函数之前对其进行评估。

在上面的例子中,这意味着and表达式不能用operator函数来表达;如果function_object是 false-y,它可能也不能调用,如果some_value是 true-thy,你不想调用昂贵的函数调用。

如果不需要惰性求值,则很容易创建自己的函数:

def and_(op1, op2):
    return op1 and op2

def or_(op1, op2):
    return op1 or op2
于 2013-10-17T13:02:35.870 回答
1

你可以自己写:

logical_and = lambda a, b: a and b
于 2013-10-17T13:04:06.400 回答