0
def foo():
    testdict = {'A': '1235', 'B': '6458', 'C': 54156}
    dofoo(testdict)

def dofoo(testdict):
    testdict['A'] = testdict['A'].replace('2', '')

testdictが設定されている場合、変数の値への参照はどうなりましたtestdict['A']か?そのアイテムだけが元の値への参照を失いましたか?

編集:

なぜなら私がそうするなら:

def foo():
    testdict = {'A': '1235', 'B': '6458', 'C': 54156}
    dofoo(testdict)

def dofoo(testdict)
    testdict = {'F' : '156', 'G' : '6875'}

その後、参照は失われます。では、そのようなコレクションのアイテムを設定したらどうでしょうか。

4

2 に答える 2

2
testdict = {'A': '1235', 'B': '6458', 'C': 54156}

def foo(x):
    x['A'] = 0;

foo(testdict)

print testdict['A']

testdict['A']の出力は0です。

これは、dictが参照としてfoo関数に渡されるためです。

したがって、testdictをfooに渡す場合、xはtestdictのコピーである新しいdictではありません。実際には同じtestdictへのポインターです。x ['A']が変更されると、testdict['A']も変更されることを意味します。

于 2013-03-16T23:52:30.470 に答える