1. 程式人生 > >Python兩個變數交換值【同時賦值的原理】

Python兩個變數交換值【同時賦值的原理】

'''
提示:Python中變數儲存的都是地址
同時賦值的原理就是,等號右側是一個元組
而元組定義後都會在記憶體中建立一個空間,並且儲存元組中各個元素的地址,Python中每一個型別資料都是物件,也都是地址。
所以,當定義(a, b)元組後,實際上,記憶體中元組儲存的元素是每個值a和b的地址
而等號左側之所以多個變數能得到值,是因為Python有一個獨特的賦值方式,那就是會把等號右側元組中值的地址,依次按索引把
地址賦值給左側的變數。
'''

見程式碼:

# 測試元組的幾種定義方式
a, b = 10, 20
print("a的型別是:【%s】" % type(a))
print("b的型別是:【%s】" % type(b))
g_result01 = (a, b)
print("g_result01的型別是:【%s】" % type(g_result01))

g_result02 = a, b
print("g_result02的型別是:【%s】" % type(g_result02))

g_result03 = 30, 40
print("g_result03的型別是:【%s】" % type(g_result03))

g_b, g_a = a, b
print("g_a 和 b的地址是否相同:【{0}】".format(g_a is g_result02[1]))
print("g_b 和 a的地址是否相同:【{0}】".format(g_b is g_result02[0]))

輸出為:

a的型別是:【<class 'int'>】
b的型別是:【<class 'int'>】
g_result01的型別是:【<class 'tuple'>】
g_result02的型別是:【<class 'tuple'>】
g_result03的型別是:【<class 'tuple'>】
g_a 和 b的地址是否相同:【True】
g_b 和 a的地址是否相同:【True】