1

重複の可能性:
Pythonの「驚き最小の原則」:可変のデフォルト引数

SOまたはpythonで答えを見つけようとしましたが、参照を取得できませんでした。

import random 

def test(headers=[('Application','Value')]):
    print headers
    headers.append(('Random',random.randint(0,100)))
    print headers


test()
test()
test()

私はこの出力を取得し続けます

[('Application', 'Value')]
[('Application', 'Value'), ('Random', 8)]
[('Application', 'Value'), ('Random', 8)]
[('Application', 'Value'), ('Random', 8), ('Random', 46)]
[('Application', 'Value'), ('Random', 8), ('Random', 46)]
…………

このコードを実行すると、関数パラメーターであるにもかかわらず、Pythonがヘッダーの値を保持しているように見えます。Java、.NET、およびphpから来た私は、まだこれに対するロジックを認識していません。

誰かが私を啓発できますか?

4

0 に答える 0