注意python中的引用問題

2021-05-26 16:21:22 字數 927 閱讀 3102

一:比如

a = [['',0]] * 5

對第乙個list中的數字進行賦值。**如下:

a[0][1] = 5

列印則會出現以下情況:

>>> print a

[['', 5], ['', 5], ['', 5], ['', 5], ['', 5]]

原因是:a = [['',0]] * 5 ,只是對['',0]進行了淺拷貝,也就是說[['',0]] * 5拷貝的只是引用,所以對乙個賦值其他的引用也會相應的改變,於是出現上面的情況。

nnd,弄了乙個多小時。

二:

def tp(a):

a[0] = 1

if __name__ == '__main__':

a = [2, 3, 4]

print a

tp(a)

print a

結果為:

[2, 3, 4]

[1, 3, 4]

而換成:

def tp(a):

a =1

if __name__ == '__main__':

a = [2, 3, 4]

print a

tp(a)

print a

結果變成:

[2, 3, 4]

[2, 3, 4]

三:>>> a = [[1, 2], [2, 3]]

>>> b = a[:]

>>> c = a

>>> id(a)

182980812952

>>> id(b)

182980796288

>>> id(c)

182980812952

從中可以看出b為賦值,而c為引用,在函式引數中要注意這種情況。

注意python中的引用

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

python 類中引用資料的問題

在python類中引用資料的時候,我們會發現,傳入 init 的引數有時候可以在類中直接呼叫,等同於用self引用 但import到其他py檔案後,就顯示無法找到該函式了。原因在於,在init函式中有可能在if name main 後定義了該同名引數,所以在執行原檔案的時候,存在這一變數,但是當im...

Python中的變數引用物件需注意的幾點

分類 python 55 0 普通引用 python中,變數的作用僅僅是乙個標識,只有賦值後才被建立,它可以引用任何型別的物件,而且在引用之前必須賦值。賦值後的變數指向響應的物件,擁有該物件的空間。型別屬於物件,但是不是變數。python view plain copy a 3 a science ...