【廖雪峰python入門筆記】變數

Datawhale發表於2018-07-05

1. 靜態語言和動態語言中的變數表示

靜態語言在定義變數時必須指定變數型別,如果賦值的時候型別不匹配,就會報錯。例如Java是靜態語言,賦值語句如下:

int a = 123; // a是整數型別變數
a = "mooc"; // 錯誤:不能把字串賦給整型變數

和靜態語言相比,動態語言更靈活。

2. 變數在計算機中的記憶體表示

最後,理解變數在計算機記憶體中的表示也非常重要。當我們寫:a = ‘ABC’時,Python直譯器幹了兩件事情:

  1. 在記憶體中建立了一個’ABC’的字串;

  2. 在記憶體中建立了一個名為a的變數,並把它指向’ABC’。

也可以把一個變數a賦值給另一個變數b,這個操作實際上是把變數b指向變數a所指向的資料,例如下面的程式碼:

a = 'ABC'
b = a
a = 'XYZ'
print(b)

最後一行列印出變數b的內容到底是’ABC’呢還是’XYZ’?如果從數學意義上理解,就會錯誤地得出b和a相同,也應該是’XYZ’,但實際上b的值是’ABC’:
執行·a = ‘ABC’,直譯器建立了字串 ‘ABC’和變數 a,並把a指向 ‘ABC’:

執行a
執行b = a,直譯器建立了變數 b,並把b指向 a 指向的字串’ABC’:

執行a = ‘XYZ’,直譯器建立了字串’XYZ’,並把a的指向改為’XYZ’,但b並沒有更改:

所以,最後列印變數b的結果自然是’ABC’了。

相關文章