Paul Graham描述了以下问题:
我们想编写一个生成累加器的函数——一个接受数字 n 的函数,并返回一个接受另一个数字 i 并返回以 i 递增的 n 的函数。
他说,虽然这样的功能可以在 Lisp/Ruby/Perl 中实现,但就像类似
(defun foo (n)
(lambda (i) (incf n i)))
, 在 Python 中它会写成
class foo:
def __init__(self, n):
self.n = n
def __call__(self, i):
self.n += i
return self.n
所以我的问题是,Python 究竟是什么(除了缺乏对多行 lambda 的支持)阻止您以上面第一个代码示例的简洁风格实现累加器生成器?正如 Paul Graham 推测的那样,Python 将来会支持这样的东西吗?