Python填坑記——物件引用
阿新 • • 發佈:2019-01-31
首先,我們來了解一下python的基礎概念:
1. Python在heap中分配的物件分成兩類:可變物件和不可變物件。所謂可變物件是指,物件的內容是可變的,例如list。而不可變的物件則相反,表示其內容不可變。
不可變物件:int,string,float,tuple
注意下面這個例子跟上面例子的區別。
1. Python在heap中分配的物件分成兩類:可變物件和不可變物件。所謂可變物件是指,物件的內容是可變的,例如list。而不可變的物件則相反,表示其內容不可變。
不可變物件:int,string,float,tuple
可變物件 :list,dictionary
2. Python函式的引數傳遞採用的是“傳物件引用”的方式。
下面我們用例子來理解一下以上概念:
x=1
y=x #y跟x指向同一個物件引用
x=2 #由於x是不可變物件,這時候舊的物件被系統回收,x指向新的物件引用
print x,y #結果是2,1
a = ['1'] #a指向了一個list可變物件引用 b = a #b跟a指向同一個物件引用 a[0] = 2 #改變a物件引用的值,那麼跟a指向同一個物件引用的b的值也隨之同步改變。 print a,b #結果是2,2
def func(a):
a[0]=1 #改變a物件引用的值,那麼跟a指向同一個物件引用的b的值也隨之同步改變。
b=['2']
func(b) #上面提到,函式的引數傳遞就是傳物件引用,所以這裡就相當於b=a,即b跟a指向同一個物件引用
print b #結果[1]
注意下面這個例子跟上面例子的區別。
def func(a):
a=['1'] #這裡並沒有修改a指向的物件引用的值,而是a指向了新的物件引用,所以最後b的值沒有改變。
b=['2']
func(b)
print b #結果[2]