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++的多态性,利用基类指针来调用派生类的方法!

猜你喜欢

转载自blog.csdn.net/qq_33345917/article/details/83585164
今日推荐