python學習之動態類型原理淺析

請看代碼:

a=3
id(a)
1871146064

a=4
id(a)
1871146096

id(3)
1871146064
對於同一個變量a,當a的值不同時,地址也不同,可見對變量a重新賦值,實際上是把a指向了另一對象。這與C/C++很不同,C/C++對非指針變量改變是改寫變量對應物理內存的內容,而不是重新指向另一個內存區域。
再看以下代碼:

inta=16
type(inta)
<class ‘int’>

inta=“ssssss”
type(inta)
<class ‘str’>
變量的類型可以任意改變,不受初始類型的約束,並且可以指向字符常量,與c/c++相差甚遠。
python變量的類型取決於變量所指字符常量對象的類型,而且變量可以重定向,所以就具有了動態類型,在python內部實現,變量實際上是到對象內存空間的一個指針。
其實用C++也可以實現python的這一特性,把所有內置類型都繼承於同一基類,基類的方法聲明爲虛函數,用基類指針聲明變量名,通過C++的多態性,利用基類指針來調用派生類的方法!

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