python中的引用

2021-08-08 04:28:11 字數 698 閱讀 9848

spam=42

cheese=spam

spam=20

print(spam)

print (cheese)

輸出結果為:

將42賦給spam變數,然後拷貝spam中的值,將它賦給變數cheese,當稍後改變spam的值不會影響到cheese的值,這是因為spam和cheese是兩個不同的變數,儲存了不同的值。

但是列表不是這樣的,當你將列表賦給乙個變數的時候,實際上是將列表的引用賦給了該變數,引用是乙個值,指向某些資料。列表引用是指向乙個列表的值。這有些**,會更加容易理解這個概念。

spam=[0,1,2,4,5,6]

cheese=spam

cheese[1]='hello'

print spam

print cheese

輸出結果為:

[0, 'hello', 2, 4, 5, 6]

[0, 'hello', 2, 4, 5, 6]

**只改變了cheese列表,但似乎cheese和spam列表同時發生了改變,當建立表的時候,你將對它的引用賦給了變數,但下一行只是將spam中的列表引用拷貝到了cheese,而不是列表值本身。這意味著儲存在spam和cheese中的值指向了同乙個列表。底下只有乙個列表,因為列表本身實際從未複製,所以當你修改cheese變數的第乙個元素時,實際就是修改了表,所以spam的值發生了變化。

python中的引用

python 中一切皆為物件,數字是物件,列表是物件,函式也是物件,任何東西都是物件。而變數是物件的乙個引用 又稱為名字或者標籤 物件的操作都是通過引用來完成的。例如,是乙個空列表物件,變數a是該物件的乙個引用 在 python 中,變數 更準確叫法是 名字 賦值操作 就是把乙個名字繫結到乙個物件上...

注意python中的引用

mylist shoplist 這裡是引用,當shoplist改變時,mylist也跟著改變,因為他們指向的是同一片記憶體。del shoplist 0 print shoplist is shoplist print mylist is mylist 打出來的內容都是一樣的。當你建立乙個物件並將它...

注意python中的引用問題

一 比如 a 0 5 對第乙個list中的數字進行賦值。如下 a 0 1 5 列印則會出現以下情況 print a 5 5 5 5 5 原因是 a 0 5 只是對 0 進行了淺拷貝,也就是說 0 5拷貝的只是引用,所以對乙個賦值其他的引用也會相應的改變,於是出現上面的情況。nnd,弄了乙個多小時。二...