我很惊讶在运算符模块中找不到布尔(不是按位)和运算符:
http://docs.python.org/2/library/operator.html
为什么呢?有解决方法吗?
Pythonand
和or
运算符懒惰地评估它们的表达式,允许您使用如下表达式:
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
你可以自己写:
logical_and = lambda a, b: a and b