この投稿の回答からこの質問を受け取りました。
このコードを検討してください
def test(a,dict={}):
b=5
dict[a]=1
print dict
print locals()
test(1)
test(2)
出力は次のとおりです。
{1: 1}
{'a': 1, 'b': 5, 'dict': {1: 1}}
{1: 1, 2: 1}
{'a': 2, 'b': 5, 'dict': {1: 1, 2: 1}}
私が推測できるように、辞書への「グローバル」参照があります。
関数にデフォルトのパラメーターとして渡されるものは、名前空間のどこかに永続的です。
関数が再度呼び出されると、共有されます。しかし、どうすれば電流dict
が保持されているかを知ることができますか. 関数のdict
外側にあるものを関数に渡してdict
、何が保持されているかを知ることができdict
ます。
しかし、私の質問は、デフォルトのパラメーターdict
が存在する場所 (名前空間内) とそれにアクセスする方法です。これはいつdict
作成されますか?関数が初めて呼び出されたとき、またはdef
ステートメントが実行されたとき?
ところで、locals()
dictが関数に対してローカルであることを示すショーを印刷します
ありがとう