Python兩個變數交換值【同時賦值的原理】
阿新 • • 發佈:2018-12-13
'''
提示: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】