Python で関数内に関数を定義するのは悪いことだとどこかで読みました。これは、外側の関数が呼び出されるたびに Python が新しい関数オブジェクトを作成するためです。誰かが基本的にこれを言った:
#bad
def f():
def h():
return 4
return h()
#faster
def h():
return 4
def f(h=h):
return h()
これは本当ですか?また、次のような定数が大量にある場合はどうでしょうか。
x = # long tuple of strings
# and several more similar tuples
# which are used to build up data structures
def f(x):
#parse x using constants above
return parse dictionary
すべての定数を f の定義内に入れると速くなりますか? または、それらを外部に残して、キーワード引数でローカル名にバインドする必要がありますか? 残念ながら、タイミングを行うためのデータがありません。そのため、同様の経験についてお尋ねしていると思います。