python筆記 可變物件與不可變物件

2021-09-30 13:52:09 字數 1581 閱讀 1380

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...