type(name、base-classes、namespace-dict)を使用して動的クラスを作成できるように、動的関数を作成できますか?Pythonで真の動的関数と匿名関数が可能ですか?
私はの線に沿って何かやってみた:特にが動的の作成を防ぐ
>>> def fn():
... pass
...
>>> type(fn)
<type 'function'>
>>> f = type("f", (type(fn),), {})
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: type 'function' is not an acceptable base type
んPythonの:
>>> f = type("f", (function,), {})
NameError: name 'function' is not defined
[OK]を、ので、私は賢いだろうが、動的クラスを可能にするのと同じ方法で機能しますか?
編集:私はexecの使用を許可しません。私の質問はPython言語自体が許可しているからです。
ありがとうございます。
で異なっている: 'FOO
あなたが使用することができ、生成されたASTはどうあるべきかについてのインスピレーションを取得するには=λx:x * 2 'である。そして、あなたはどんなクラスも呼び出し可能にすることができます... –しかし、私はPythonのラムダは、無名関数としてのラムダの古典的な概念と同等であるとは思いませんか? Pythonのラムダは、基本的に単一の式しか扱えないので、はるかに制限されています。 –
ですが、リストの理解は単一の式なので、ループ、割り当て、副作用、フローの制御、それらのネストを行うことができます。 – ch3ka