給你介紹Python中普通引用和共享引用在引用物件中需要注意的點:
普通引用:
Python中,變數的作用僅僅是一個標識,只有賦值後才被建立,它可以引用任何型別的物件,而且在引用之前必須賦值。賦值後的變數指向響應的物件,擁有該物件的空間。型別屬於物件,但是不是變數。
[python]
view plain copy
a = 3
a = "science"
上述程式碼說明數值3和字串“science”分別是兩種物件,初始變數a賦值物件3被建立,變數a指向物件3的記憶體空間,之後變數a又指向了字串的記憶體空間。
共享引用:
b = a
上述程式碼說明變數a,b同時引用了物件3,兩個變數引用了相同的物件。正是因為兩者都是指向了相同的物件,所以當其中一個變數引用其他物件的時候,不會對另一個變數造成影響。例如:
a = “science”
在上面程式碼的基礎上,變數a引用了字串物件“science”,此時變數b依舊引用物件3,而不是“science”。
但是有些物件的操作會在原處修改,例如列表。例如:
a = [1,2,3]
變數a,b應用了包含1,2,3物件的列表,自然而然的a[0]引用物件1,如果在變數a中執行操作
a[0] = 4
那麼變數b就變隨之變為[4,2,3]。避免這種情況可以使用copy操作,替換引用操作。
給你介紹Python中普通引用和共享引用在引用物件中需要注意的點:
普通引用:
Python中,變數的作用僅僅是一個標識,只有賦值後才被建立,它可以引用任何型別的物件,而且在引用之前必須賦值。賦值後的變數指向響應的物件,擁有該物件的空間。型別屬於物件,但是不是變數。
[python]
view plain copy
a = 3
a = "science"
上述程式碼說明數值3和字串“science”分別是兩種物件,初始變數a賦值物件3被建立,變數a指向物件3的記憶體空間,之後變數a又指向了字串的記憶體空間。
共享引用:
[python]
view plain copy
a = 3
b = a
上述程式碼說明變數a,b同時引用了物件3,兩個變數引用了相同的物件。正是因為兩者都是指向了相同的物件,所以當其中一個變數引用其他物件的時候,不會對另一個變數造成影響。例如:
[python]
view plain copy
a = “science”
在上面程式碼的基礎上,變數a引用了字串物件“science”,此時變數b依舊引用物件3,而不是“science”。
但是有些物件的操作會在原處修改,例如列表。例如:
[python]
view plain copy
a = [1,2,3]
b = a
變數a,b應用了包含1,2,3物件的列表,自然而然的a[0]引用物件1,如果在變數a中執行操作
[python]
view plain copy
a[0] = 4
那麼變數b就變隨之變為[4,2,3]。避免這種情況可以使用copy操作,替換引用操作。