1

我知道 中的partial函数functools,但是在一般的 Python 程序(不是:Haskell、Erlang、Clojure 等)中编写函数以在 Python 中返回函数有多常见?

例如:

>>> def returnfunk(xs):
...     return lambda x: list(filter(lambda y: x == y, xs))
... 
>>> fn = returnfunk(["cat", "dog", "horse"])
>>> 
>>> (fn("cow") == []) == True
True
>>> (fn("cat") == ['cat']) == True
True
>>> 
>>> list(filter(fn, ["zebra", "elephant", "dog", "parrot", "cat"]))
['dog', 'cat']

它是为了real (python) world爱好,学术,兴趣而设计的吗?

4

4 回答 4

3

装饰器@classmethod@staticmethod是两个例子。

于 2012-07-30T19:49:58.283 回答
1

它们非常有用。函数式编程一直都在使用这种东西,它可以极大地简化任务,例如filter您在上面使用的方式(尽管有更简单的方法可以完成您在其中尝试做的事情)。

于 2012-07-30T19:51:57.900 回答
1

它是为了灵活性。函数返回函数可以做很多事情,比如柯里化、组合和装饰。当然,它允许您玩弄闭包,这为您提供了极大的编码灵活性。您是否需要它很大程度上取决于您的应用程序。

于 2012-07-30T19:53:42.630 回答
1

它在现实世界中非常常用。我首先想到的是具有可插拔接口的 API。大多数通过实现函数注册表然后在该注册表中进行查找来操作。

于 2012-07-30T19:50:17.230 回答