python函数返回函数

时间:2012-07-30 19:46:57

标签: python function functional-programming

我知道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 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

它在现实世界中非常常用。我想到的第一件事就是带有可插拔接口的API。大多数操作通过实现函数注册表然后执行查找到该注册表。

答案 2 :(得分:1)

它们非常有用。函数式编程一直使用这种东西,它可以大大简化filter之类的任务,就像你上面使用的那样(虽然有更简单的方法来完成你在那里尝试的东西)。

答案 3 :(得分:1)

这是为了灵活性。函数返回功能有很多种功能,比如currying,组合和装饰。当然,它允许您玩具闭合,这使您在编码时具有很大的灵活性。是否需要它取决于您的应用程序。