sta*_*tti 0 python functional-programming standard-library
我很惊讶在运算符模块中找不到布尔值(非按位)和运算符:
http://docs.python.org/2/library/operator.html
为什么会这样?有解决方法吗?
Python and和or运算符懒惰地评估它们的表达式,允许你使用如下表达式:
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)
| 归档时间: |
|
| 查看次数: |
102 次 |
| 最近记录: |