可爱的 Python: 在 Python 中进行函数编程,第 3 部分
2008-11-13 13:19:33 来源:WEB开发网表达式绑定
一个永不满足于部分解决方案的读者 -- Richard Davies -- 提出了我们是否能够始终把绑定移到单独的表达式中这样一个问题。让我们快速地浏览一下我们为什么想要这么做,并展示一个由 comp.lang.python 的投稿者提供的一个非常棒的方法。
让我们首先回顾一下 functional 模块中的 Bindings 类。通过使用那个类的属性,我们能够确保一个特殊名称在给定块的范围内只有一个意思:
清单 1:带有受保护重绑定的 Python FP 部分
>>>
from
functional
import
*
>>> let = Bindings()
>>> let.car =
lambda
lst: lst[0]
>>> let.car =
lambda
lst: lst[2]
Traceback (innermost last):
File "<stdin>", line 1,
in
?
File "d:toolsfunctional.py", line 976,
in
__setattr__
raise
BindingError, "Binding '%s' cannot be modified." % name
functional.BindingError: Binding 'car' cannot be modified.
>>> let.car(range(10))
0
更多精彩
赞助商链接