首先,我們來了解一下python的基礎概念:
1. python在heap中分配的物件分成兩類:可變物件和不可變物件。所謂可變物件是指,物件的內容是可變的,例如list。而不可變的物件則相反,表示其內容不可變。
不可變物件:int,string,float,tuple
可變物件 :list,dictionary
2. python函式的引數傳遞採用的是「傳物件引用」的方式。
下面我們用例子來理解一下以上概念:
[python]view plain
copy
x=1y=x #y跟x指向同乙個物件引用
x=2#由於x是不可變物件,這時候舊的物件被系統**,x指向新的物件引用
x,y
#結果是2,1
[python]view plain
copy
a = [
'1']
#a指向了乙個list可變物件引用
b = a #b跟a指向同乙個物件引用
a[0] =
2#改變a物件引用的值,那麼跟a指向同乙個物件引用的b的值也隨之同步改變。
a,b
#結果是2,2
[python]view plain
copy
deffunc(a):
a[0]=
1#改變a物件引用的值,那麼跟a指向同乙個物件引用的b的值也隨之同步改變。
b=['2'
] func(b) #上面提到,函式的引數傳遞就是傳物件引用,所以這裡就相當於b=a,即b跟a指向同乙個物件引用
b #結果[1]
注意下面這個例子跟上面例子的區別。
[python]view plain
copy
deffunc(a):
a=['1'
] #這裡並沒有修改a指向的物件引用的值,而是a指向了新的物件引用,所以最後b的值沒有改變。
b=['2'
] func(b)
b #結果[2]
python物件 引用
python中 所有的python物件都有3個特徵 身份,型別和值 其它內建型別 核心筆記 布林值 none false 所有的值為0的數 0 整型 0.0 浮點型 0l 長整型 0.0 0 0j 複數 空字串 空列表 空元組 空字典 bool bool 函式測試 bool false 值不是上面列...
python物件引用的問題
python 動態的引用物件會出現一些比較奇怪的現象。如result listdict result dict foriinrange len result list ifi self.n break 執行結果是list中所以的元素都是最後dict中的值 如果想得到正確的結果,則需要改為 resul...
python物件引用(變數)
python將所有資料存為記憶體物件 變數事實上是指向記憶體物件的引用 動態型別 在任何時刻,只要需要,某個物件引用都可以重新引用乙個不同的物件 可以是不同的資料型別 內建函式type 用於返回給定資料項的資料型別 等號用於將變數名和記憶體中的資料物件繫結,如果物件事先存在,則直接繫結,否則,建立引...