1. 程式人生 > >[Python] 動態型別的實現

[Python] 動態型別的實現

大多數編譯型語言,變數在使用前必須先宣告,其中的 C 語言更加苛刻:變數宣告必須位於程式碼塊最開始,且在任何其他語句之前。其它語言,像C++和Java,允許“隨時隨地”宣告變數,比如,變數宣告可以在程式碼塊的中間,不過仍然必須在變數被使用前宣告變數的名字和型別。

在Python 中,無需此類顯式變數宣告語句,變數在第一次被賦值時自動宣告,Python 中不但變數名無需事先宣告,而且也無需型別宣告。Python 語言中,物件的型別和記憶體佔用都是執行時確定的。儘管程式碼被編譯成位元組碼,Python 仍然是一種解釋型語言。在建立--也就是賦值時,直譯器會根據語法和右側的運算元來決定新物件的型別。在物件建立後,一個該物件的引用會被賦值給左側的變數。


a = 3
print a
3
a = 'abc'
print a
abc

垃圾收集器

從上面可以看出,變數時引用,物件儲存在記憶體中,一個物件可能有0個或多個變數引用它,但沒有變數引用該物件時,該物件無法訪問,垃圾收集器就可以在適當的時候回收該物件,以釋放記憶體。Python的垃圾收集器和Java的很類似。