1

コード 1

nums = [1, 2, 3]
tri = nums
nums.append(4)
print(tri)       //this prints [1, 2, 3, 4]

コード 2

num = 9
num2 = num
num = 12
print num2       // this prints 9 **BUT I expected 12 like abouve code**

私の質問は、手順と割り当てがほとんど似ているのに、これら2つの出力に違いがあるのはなぜですか?

4

3 に答える 3

4

最初の例では、同じオブジェクトnumsを参照してください。triこのappendメソッドは参照オブジェクトをその場で変更するため、 と の両方numstri同じ (変更された) オブジェクトを参照し続けます。

2 番目の例でnumは、完全に新しいオブジェクト (12) に設定されます。値を変更する前num2に参照していたオブジェクト (9) を参照し続けます。num

于 2013-07-14T16:26:18.933 に答える
-1

コード 1 タプルを使用します。タプルは参照型のデータです。(配列、タプル、クラス)

コード 2 は、Integer を使用したものです。型データです。

値の型は、常に値を別のメモリ ロケーションにコピーします。

ただし、参照データ型は常に値をメモリ位置に置き換えます。

この概念には、オブジェクト指向プログラミングが付属しています。

于 2013-07-14T16:38:52.360 に答える