2017-05-25 16 views
-3
def foo(a, b): 
    a = 1 
    b[0] = 2 

p, q = 100, [200, 300] 
foo(p, q) 
print(p, q) 

>>> 100 [2, 300] 

私の質問は、なぜqが変わるのですが、pはそうではありませんか?ありがとうございました!割り当てが間違っているのはなぜですか?

+0

'b'をコピーすると思いますか?そうではありません、すべての名前は参照です。これがどのように機能するかについては、複製を参照してください。または、[リストを複製またはコピーする方法?](// stackoverflow.com/q/2612802)を参照してコピーを作成してください。 –

+0

ここに質問をする前に、類似のものを検索してください。あまりにも多くの同様の質問があります、あなたはそれらから回答を持つことができます –

+0

ありがとう。私は検索を試みたが間違ったキーワードを使用した。 –

答えて

1

qはリストであるため、関数には「参照渡し」されます。 pは値渡しです。

+0

ありがとうございました –

+0

感謝の印として、それが役に立つと分かったときに答えをアップしてください。 – sophros

関連する問題