1. 程式人生 > >從函式的引數傳遞來理解python中“一切都是物件”

從函式的引數傳遞來理解python中“一切都是物件”

From Python 初學者:

a = 2

其中2為物件,a可理解為貼在物件上的標籤。

物件由不可變物件和可變物件,不可變物件有數字、字串、元祖,可變物件有列表,字典,集合。

def f(x):
    x *= 2

a = 1
f(a)
print(a)    #1

b = [1,2,3]
f(b)
print(b)    #[1,2,3,1,2,3]

f(a)將a所貼的物件1傳入函式中,此時物件1上貼了兩個標籤a和x,函式執行x *= 2後,將標籤x貼在了物件2上,但標籤a仍然貼在物件1上。

f(b)將b所貼的物件[1,2,3]傳入函式中,此時物件[1,2,3]上貼了兩個標籤b和x,由於列表是可變物件,對列表執行乘法相當於將列表的內容重複一遍,是對原物件進行操作,而不是生成一個新物件。