1. 程式人生 > >python學習筆記1:動態型別模型

python學習筆記1:動態型別模型

如下圖是python的動態型別模型示意圖

(說白了就是將變數和物件分別儲存在不同的區域,其具體實現還是有其複雜性,但不妨礙我們理解)


關於模型的一些說明及結論:


1.python中變數有些類似C++中的指標,但不同的是,python將這個含義做了普適性推廣,讓變數不再必須指向某種具體型別。這樣變數a可以指向整型3,也可以指向字串型別“abc”或者列表“[1,2,3]”等更復雜的物件,如下的程式碼是完全可行的
a=3
a=“abc”
a=[1,2,3]


2.變數所引用的物件才是有型別的,但變數名稱本身是無型別的


3.執行a=3的過程實際是這樣的:
①建立一個物件,代表值3
②.建立一個變數a(如果它還沒有建立的話)
③.將變數與新的物件3連線(引用,指標指向)

擴充套件說明:

1.變數總是連線到物件,並且絕不會連線到其他的變數上
2.大部分的物件可以連線到其他的物件
3.物件是被分配的一塊記憶體,有足夠的空間去表現他們所代表的值,摘抄了部分便於我們理解的內容如下:
①.每一個物件都有兩個標準的頭部資訊:一個型別識別符號(去標示這個物件的型別)、一個引用的計數器(用來決定是不是可以回收這個物件)

個人思考:

程式語言本身的實現較複雜,但我覺得“相信它能做到,這就夠了”。底層的東西我們可以去深挖,但我們應該明確我們深挖的目的——更好的理解本層的東西,因為我們大多數人應該並不會去開發一種類似python的語言


參考:http://blog.csdn.net/chenjinyu_tang/article/details/6738140