Python动态类型机制
要回答Python动态类型机制。
我们需要先来谈谈:Python中的对象引用机制和动态类型,是的,Pyhton使用变量的时候都没有声明变量的类型,这一点和 JAVA/C++是不同的,但是,在Python中,变量还是可以工作, 因为在Python中类型是在 运行过程中自动决定额,而不是通过代码声明的,这就意味着没有必要事先声明变量
💚💚💚
- 在Python中,我们需要明确一个概念:变量名和对象是划分开的,变量名永远没有任何关联的类型信息,类型和对象是关联的,它不存在变量名中。
- 一个变量名当第一次被赋值的时候就被创建,而当新的赋值表达式出现时,它会马上被当前新引用的对象所替代。
这就是:Python所谓的动态类型机制。
举例:
a = 'abcde'
print(a)
a= [1,2,3,4]
print(a)
// 打印结果
$ python 8.1.py
abcde
[1, 2, 3, 4]
结合这个例子,我们在梳理一下
- 刚开始创建了一个 字符串对象 ‘abcde’ , 然后创建了一个变量a, 将变量a 和 字符串对象 ‘abcde’ 相连接
- 之后又创建了一个列表对象 [1,2,3,4] ,然后又将它和 a 相连接
分析:
- 这从从变量到对象的连接,我们称之为引用,它在内存中 以指针的形式实现。
- 因此,简单来说,变量事实上是到对象内存空间的一个指针,而且指向的对象可以随着程序赋值语句而不断变化。
总结
变量名没有类型,只有对象才有类型,变量只是引用了不同类型的对象而已,每一个对象都包含了两个头部信息,一个是 类型标志符,标识这个对象的类型,一个引用的计数器用来表示这个对象被多少个变量名所引用,如果此时没有变量引用,那么就可以回收这个对象。