《Python 3.x入门到应用实践》 —2.1.3 静态类型与动态类型
2.1.3 静态类型与动态类型
Python执行时才决定数据类型的方式属于“动态类型”,什么是动态类型呢?程序设计语言的数据类型按照类型检查方式可分为“静态类型”(Statically-Typed)与“动态类型”(Dynamically-Typed)。
1. 静态类型
编译时会先检查类型,因此变量使用前必须先进行明确的类型声明,执行时不能任意变更变量的类型,像Java、C就属于这类程序设计语言。例如,下面的C语言程序语句声明变量number是int整数类型,变量的初值设置为10,当我们再把 "apple" 赋值给number时,就会出错,因为 "apple" 是字符串,在编译阶段会因类型不符而导致编译失败。
int number = 10
number = "apple" #Error:类型不符
2. 动态类型
编译时不会事先进行类型检查,在执行时才会按照变量值来决定数据类型,因此变量使用前不需要声明类型,同一个变量还可以赋予不同类型的值,Python就属于动态类型。例如,下面的程序语句声明变量number,同时设置初值为整数10,当我们把字符串apple赋值给number时,就会自动转换类型。
number = 10
number = "apple"
print( number ) #输出字符串apple
Python有垃圾回收(Garbage Collection)机制,当对象不再使用时,解释器会自动回收,释放内存空间。在上面的例子中,当整数对象number重新赋值成另一个字符串对象时,原本的整数对象会被解释器删除掉。如果对象确定不需要使用了,我们也可以使用“del”指令来删除,语法如下:
del 对象名称
例如:
>>>number = "apple"
>>>print( number ) #输出apple
>>>del number #删除字符串对象number
>>>print(number) #Error: number未定义
执行结果如图2-3所示。由于变量number已经删除,如果再使用number变量,就会出现变量未定义的错误信息。
图2-3
- 点赞
- 收藏
- 关注作者
评论(0)