python中,萬物皆物件。所有的物件可以分為可變物件與不可變物件兩類。當變數引用不可變物件時,使用該變數的任何操作,都會建立新物件,而不會改變引用的物件。與此相反,變數引用可變物件時,或者可能建立新的物件,或者改變被引用的物件本身,這取決於進行的何種操作。
1.可變物件與不可變物件
可變物件是指物件的內容可變,包括字典(dictionary)、列表(list)。
不可變物件是
指物件的內容不可變,包括int、字串(string)、浮點型(float)、數值型(number)、元組(tuple)。
2.對不可變物件的操作
這裡舉乙個簡單的例子。
>>>myint = 27
>>>yourint = myint
>>>yourint
27>>>yourint = yourint + 5
>>>myint
27>>>yourint
32
當宣告
myint = 27 和
yourint = myint 後,myint 和 yourint 指向了同乙個物件27。當執行
yourint = yourint +5後,由於int型別為不可變物件,yourint會指向乙個新的物件32。
3.對可變物件的操作
>>>list1 = [1,2,3]
>>>list1
[1,2,3]
>>>list2 = list1
>>>list2
[1,2,3]
>>>list1 is list2
true
>>>list1
[1,2,3,27]
>>>list2
[1,2,3,27]
對list1做的改變也影響了list2!這是因為list1和list2都引用了同乙個物件。由於是可變物件,除非你要求,否則python不會儲存副本,他會通過重用儲存已存在的物件來節省空間。
說到這裡,可能有的小夥伴想問,如果想複製列表,而不是引用同乙個物件該怎麼辦,這時候可以改用分片[:]的方法,如下所示:
>>>list1 = [1,2,3]
>>>list1
[1,2,3]
>>>list2 = list1[:]
>>>list1 is list2
false
>>>list2
[1,2,3]
>>>list1
[1,2,3,27]
>>>list2
[1,2,3]
4.總結
在 python中,當變數引用不可變物件時,使用該變數的任何操作(連線、替換、去除等),都會
建立新物件
,而不會改變引用的物件。與此相反,變數引用可變物件時,或者可能
建立新的物件
,或者改變被引用的物件
python可變物件與不可變物件
可改變的物件 例子1def change num print function parameter id num num 100 print assigin value to num id num if name main a 10 print origin id a id a change a p...
python 十二 可變物件與不可變物件
可變物件 字典,列表,自定義物件 不可變物件 數字,字串,元組,bool a 1,2 print id for a is format id a def add 3 n print id of is format n,id n print id of is format n,id n 輸出 id f...
python中 可變與不可變物件
先看 python 1 2 3 4 a 1 def fun a a 2 printa 1 python 1 2 3 4 b def fun b b.1 printb 1 上面兩個分別輸出的到底應該是哪乙個呢?這裡首先需要弄清楚的就是可變 mutable 物件與不可變物件 immutable 在pyt...