1

私はのpartial関数を知っていますfunctoolsが、一般的なPythonプログラム(Has​​kell、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は2つの例です。

于 2012-07-30T19:49:58.283 に答える
1

それは現実の世界で非常に使用されています。最初に頭に浮かぶのは、プラグ可能なインターフェースを備えたAPIです。ほとんどの場合、関数レジストリを実装してから、そのレジストリを検索することで動作します。

于 2012-07-30T19:50:17.230 に答える
1

それらは非常に便利です。関数型プログラミングは常にこの種のものを使用し、上記で使用した方法などのタスクを大幅に簡素化できfilterます(ただし、そこでやろうとしていたことを達成するためのはるかに簡単な方法があります)。

于 2012-07-30T19:51:57.900 に答える
1

柔軟性を目的としています。カリー化、組み合わせ、装飾など、関数を返す関数を使用して実行できることは多種多様です。そしてもちろん、クロージャをいじることができるので、コーディングに大きな柔軟性があります。必要かどうかは、アプリケーションによって大きく異なります。

于 2012-07-30T19:53:42.630 に答える