私は巨大なlist
/tuple
を*args
を介して機能させるために渡す必要があります。関数呼び出しで* argsの実行モデルとは何ですか?
def f(*args): # defined in foreign module
pass
arguments = tuple(range(10000))
f(*arguments)
そして、関数呼び出しで何が起こるのだろうか。
arguments
はどのような位置変数にも似ています:それを保存し、ボディの実行中にオンデマンドでアクセスできますか?または、体の実行の前であっても、位置引数を拡張しても、arguments
まで繰り返しますか?それとも別のことですか?
'arguments'はリストですが、' args'はタプルです。はい、iteration *には*があります。ここで '引数'をタプルとすることは役に立ちません。 –
あなたはそれが反復されているかどうかを知らせるカスタムオブジェクトを書くことによってそれをテストすることができます。 – jonrsharpe
したがって、 'arguments'がタプルであっても、この繰り返しはとにかく起こりますか? – Ormazd