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

时间:2013-10-17 12:57:46

标签: python functional-programming standard-library

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

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

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

2 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:1)

你可以写自己的:

logical_and = lambda a, b: a and b