一、引用
在java中既有值傳遞,也有引用傳遞,我們思考一下在python中值的傳遞方式是哪種類型呢?
答案是引用傳遞。
概述:
Python中存儲變量是需要占用內存空間的,為了更好地管理這些空間,每塊空間都是有自己的地址值的。
格式:
id(變量名/值) 可以查看變量/值在內存中的地址。
細節:
Python中的 = 是引用傳遞,即:把等號右邊的變量(值)地址值賦給 左邊的變量。
記憶:
1.可變和不可變類型的劃分依據:
在不改變地址值的情況下,其元素值是否可以發生改變;如果可以發生改變就是可變類型,不可以發生改變就是不可變類型。
2.可變和不可變類型的具體劃分如下:
可變類型:列表,字典,集合;
不可變類型:整型,浮點型,布爾類型,字符串類型,元組類型。
示例1.觀察如下代碼中在內存中有幾個10
# 需求1: 觀察如下的代碼, 分析: 內存中到底有幾個10.
a = 10
b = a
c = aprint(a, b, c) # 10, 10, 10# 觀察 a, b, c的地址值.
print(id(a)) # 140726997170904
print(id(b)) # 140726997170904
print(id(c)) # 140726997170904
print('-' * 30)
運行結果:
根據結果,我們可以分析得出a,b,c三個變量都指向同一個地址,這個地址內存儲的是10.
示例2.演示不可變類型修改值之后地址的變化
# 需求2: 演示 不可變類型. 整型
a = 100
print(f'變量a的內容: {a}') # 100
print(f'變量a的地址: {id(a)}') # 0x01, 140727005431320# 修改變量 a 的值.
a = 200
print(f'變量a的內容: {a}') # 200
print(f'變量a的地址: {id(a)}') # 0x02, 140727005434520
print('-' * 30)
運行結果:
可以看出,對于不可變類型,修改值之后會地址值會發生改變,變量a原來指向100對應的地址,修改值之后,地址對應也發生改變,指向200對應的地址。