我知道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
或更多的爱好,学术,兴趣?
答案 0 :(得分:3)
装饰器@classmethod
和@staticmethod
是两个例子。
答案 1 :(得分:1)
它在现实世界中非常常用。我想到的第一件事就是带有可插拔接口的API。大多数操作通过实现函数注册表然后执行查找到该注册表。
答案 2 :(得分:1)
它们非常有用。函数式编程一直使用这种东西,它可以大大简化filter
之类的任务,就像你上面使用的那样(虽然有更简单的方法来完成你在那里尝试的东西)。
答案 3 :(得分:1)
这是为了灵活性。函数返回功能有很多种功能,比如currying,组合和装饰。当然,它允许您玩具闭合,这使您在编码时具有很大的灵活性。是否需要它取决于您的应用程序。