的确,python使用变量的时候都没有声明变量的类型,这一点和C语言不同。但是,变量还可以工作,因为在python中类型是在运行的过程中自动决定的,而不是通过代码声明的,这意味着没有必要事先声明变量。
在python中,大家要明确一个概念:变量名和对象是划分开的,变量名永远没有任何关联的类型信息,类型是和对象关联的,而不存在于变量名中。一个变量名当第一次被赋值的时候被创建,而当新的赋值表达式出现时,他会马上被当前新引用的对象所代替。这就是python所谓的动态类型机制
。具体看一个例子:
结合上面这个例子,大家再来从头仔细理一理:
1、创建了一个字符串对象’abcde’,然后创建了一个变量a,将变量a和字符串对象’abcde’相连接,
2、之后又创建了一个列表对象[1,2,3,4,5],然后又将他和a相连接。
这种从变量到对象的连接,大家称之为引用,以内存中的指针形式实现。因此直白的说,在内部,变量事实上是到对象内存空间的一个指针,而且指向的对象可以随着程序赋值语句而不断变化。
总结一下:变量名没有类型,只有对象才有类型,变量只是引用了不同类型的对象而已。每一个对象都包含了两个头部信息,一个是类型标志符,标识这个对象的类型,以及一个引用的计数器,用来表示这个对象被多少个变量名所引用,如果此时没有变量引用他,那么就可以回收这个对象。
关于数据科学更系统、更深入的探讨可进入大家的专栏《Python数据科学之路》:
酱油哥:来吧,一起踏上Python数据科学之路
本专栏模仿美剧剧集编排分为五季,第一季:Python编程语言核心基础
、第二季:Python数据分析基本工具
、第三季:Python语言描述的数学基础
、第四季:机器学习典型算法专题
、第五季:实战热点深度应用。