1. ホーム
  2. python

[解決済み] Pythonの変数はポインタですか?それとも何?

2023-03-15 10:50:06

質問

Pythonの変数は、私の知る限り、単なるポインタです。

このルールに基づいて、このコードスニペットの結果を想定してみます。

i = 5
j = i
j = 3
print(i)

3 .

しかし、私にとっては予想外の結果が得られ、それは 5 .

さらに、私のPythonの本ではこの例について扱っています。

i = [1,2,3]
j = i
i[0] = 5
print(j)

結果は次のようになります。 [5,2,3] .

私は何を間違って理解しているのでしょうか?

どのように解決するのですか?

私たちはこれをリファレンスと呼んでいます。これは次のように動作します。

i = 5     # create int(5) instance, bind it to i
j = i     # bind j to the same int as i
j = 3     # create int(3) instance, bind it to j
print i   # i still bound to the int(5), j bound to the int(3)

小さな int はインターンされますが、この説明では重要ではありません。

i = [1,2,3]   # create the list instance, and bind it to i
j = i         # bind j to the same list as i
i[0] = 5      # change the first item of i
print j       # j is still bound to the same list as i