布尔“and”运算符的Python函数?

布尔“and”运算符的Python函数?,python,functional-programming,standard-library,Python,Functional Programming,Standard Library,我很惊讶在运算符模块中没有找到布尔非位and运算符: 为什么会这样?有解决方法吗?Python和/或运算符会延迟计算其表达式,允许您使用以下表达式: function_object and function_object(some, arguments) some_value or produce_new_value(expensive, call) 安全地 这将取消它们进行运算符处理的资格,因为在将表达式传递给函数之前,必须对表达式求值 在上述示例中,这意味着不能使用运算符函数表示and表达

我很惊讶在运算符模块中没有找到布尔非位and运算符:

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

Python和/或运算符会延迟计算其表达式,允许您使用以下表达式:

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

这将取消它们进行运算符处理的资格,因为在将表达式传递给函数之前,必须对表达式求值

在上述示例中,这意味着不能使用运算符函数表示and表达式;如果函数\对象为false-y,则可能也无法调用,如果某个\值为true,则不希望调用代价高昂的函数调用

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

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

def or_(op1, op2):
    return op1 or op2

你可以自己写:

logical_and = lambda a, b: a and b

这是一个很好的观点,特别是因为我想从懒散中获益。我会把我真正的问题作为一个单独的问题来问。谢谢你的回答!