Python是一門非常強大的編程語言,具有很多獨特的特性。其中一個特性就是Python中有可變對象和不可變對象的概念。對於初學者來說,可能不太理解這個概念,本篇文章旨在從不同的角度對Python可變對象和不可變對象進行詳細闡述。
一、Python對象
在Python中,一切皆為對象。任何一個值都可以看作是一個對象。數值、字符串、列表、元組等常見的數據類型都是對象。
# 例子1 a = 1 b = "hello" c = [1, 2, 3] d = (1, 2, 3)
在上面的例子中,a、b、c、d都是Python對象。
二、可變對象和不可變對象
1. 不可變對象
不可變對象是指一旦創建就不能修改其值的對象。比較常見的不可變對象有數字、字符串、元組等。
# 例子2 a = 10 b = "hello world" c = (1, 2, 3)
在上面的例子中,a、b、c都是不可變對象。
2. 可變對象
可變對象是指其值可以被修改的對象。比較常見的可變對象有列表、字典等。
# 例子3 a = [1, 2, 3] b = {"name": "Tom", "age": 18}
在上面的例子中,a、b都是可變對象。
三、Python對象的賦值和傳遞方式
1. 賦值
當我們將一個對象賦給一個變量時,變量名就成為了一個指向該對象的引用。如果賦值的是不可變對象,那麼該變量僅僅是將該對象的值複製給該變量,而不是指向該對象本身。如果賦值的是可變對象,那麼該變量就會指向該對象本身。
# 例子4 a = 10 b = a
在上面的例子中,b是指向a所指向的對象10的引用。
# 例子5 a = [1, 2, 3] b = a b[0] = 4 print(a) #[4, 2, 3] print(b) #[4, 2, 3]
在上面的例子中,a和b都指向同一個列表對象,因此修改b的同時,a也會發生改變。
2. 傳遞方式
Python中的參數傳遞都是按引用傳遞,這個引用就是指向一個對象的指針。
當參數是不可變對象時,相當於傳遞的是該對象的值。函數內部對參數的修改不會影響到函數外部傳遞的變量。
# 例子6 def func(a): a += 1 print(a) b = 1 func(b) #2 print(b) #1
當參數是可變對象時,函數內部對參數的修改會影響到函數外部傳遞的變量。
# 例子7 def func(a): a.append(4) print(a) b = [1, 2, 3] func(b) #[1, 2, 3, 4] print(b) #[1, 2, 3, 4]
在上面的例子中,雖然b在函數內部被修改了,但是函數外部的b也發生了改變。
四、總結
Python中有可變對象和不可變對象的概念。不可變對象一旦創建就不能修改其值,比較常見的是數字、字符串、元組等。可變對象的值可以被修改,比較常見的是列表、字典等。Python中的參數傳遞都是按引用傳遞,當參數是不可變對象時,相當於傳遞的是該對象的值;當參數是可變對象時,函數內部對參數的修改會影響到函數外部傳遞的變量。
原創文章,作者:ECEVT,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/369290.html