用于布尔"和"运算符的Python函数?

sta*_*tti 0 python functional-programming standard-library

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

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

为什么会这样?有解决方法吗?

Mar*_*ers 6

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

function_object and function_object(some, arguments)
some_value or produce_new_value(expensive, call)
Run Code Online (Sandbox Code Playgroud)

安全.

这使他们operator无法获得治疗,因为在将表达式传递给函数之前,您必须先评估它们.

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

如果不需要延迟评估,那么创建自己的函数很容易:

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

def or_(op1, op2):
    return op1 or op2
Run Code Online (Sandbox Code Playgroud)