Python交換變量值的語法分析

Python交換變量值的語法分析

首先,我們要明確一點區別。在python中一個變量在內存中是如何存儲的,其他語言又是如何存儲的?

在其他語言中,例如C語言中,變量名是內存地址的別名,不單獨佔據內存空間。變量名只是一個便於記憶識別的名稱,編譯器會將他編譯成相應的內存地址的。
而在python中當我們運行 a = 10 這句代碼時,內存空間中開闢了兩塊區域,變量名佔據一塊區域,引用了常量值的內存地址。

也就是說,C語言中變量變的是內存空間中的值,不變的是地址;而在Python中,變量變的是地址,不變的是內存空間中的值。

來思考一下,假設在C語言中使用python交換變量的語法(編譯器不會報出語法錯誤),會發生什麼?

int a = 10, b = 20;
a, b = b, a;

首先a的值直接被更改爲b的值,當再爲b賦值a的值時,此時a的值已經是b的值了,所以b值沒變。
所有運行後,a = 20, b = 20

那麼在python中運行代碼時:
首先,在賦值時在內存中的對應關係看起來像這樣:
a —> 10
b —> 20
在運行 a, b = b, a 時,會先將變量引用的值拿到
a, b = 20, 10
然後再分別將變量的引用指向對應的常量。
由於python改變的是引用,沒改變值,所以它可以完成交換。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章