0

この投稿の回答からこの質問を受け取りました。

このコードを検討してください

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が関数に対してローカルであることを示すショーを印刷します

ありがとう

4

1 に答える 1

1

test.func_defaultsまたはおそらく見てくださいtest.__defaults__。そこに求めるものがあると思います。

参照: http://effbot.org/zone/default-values.htm

于 2013-11-13T20:55:30.243 に答える