:機能内の機能 - 毎回ですか?私たちはこのコードを持ってみましょう
関数定義は実行可能ステートメントです:
def big_function(): def little_function(): ....... .........
ザ・Pythonドキュメントを約
def
声明言います。その実行だから、質問がある
... 関数名をバインド: def little_function()
はが呼び出されるたびに実行していますか? 質問は正確にdef
の文であり、本体はlittle_function()
ではありません。
'MAKE_FUNCTION'バイトコード命令を実行する際のオーバーヘッドの大きさはどのように分かりますか?他のほとんどの言語では通常は動作が遅いメモリを割り当てる必要があるようです。 – martineau
@martineauいいえ、大きなメモリ割り当てはありません。 'MAKE_FUNCTION' opはコードオブジェクトの参照コードを単純に増加させ、コピーする必要はありません。確かに新しい関数オブジェクトが作成されます。これは新しいPyFunctionObjectを割り当てますが、*すべての*演算がPythonオブジェクトを割り当てていることを考慮すると、パフォーマンスが "著しく"損なわれません(明らかに重要なことは、 ')。 – Bakuriu
素晴らしい説明、ありがとう! – dondublon