免费****!零基础学Python系列(14) - 动态类型和静态类型
程序员文章站
2024-01-14 22:37:58
...
本节我们接着讲动态类型和静态类型:
这个系列教程建议对照着视频学习,以下仅为课件内容。
本节课程的视频和实例源码下载方式:点击->我的主页,查看个人简介。
我尽量坚持每日更新一节。
编程语言从代码到能够运行通常需要经过编译和运行两个阶段,Python虽然是解释性语言,也不例外。源码.py通过编译,生成字节码文件.pyc。.pyc是一系列指令,这些指令通过python虚拟机PVM来执行。
我们根据检查变量数据类型的时机,将编程语言分为动态类型语言和静态类型语言。
静态类型:在编译阶段检查变量的数据类型,比如C、Java等。对于这种类型的语言,我们需要在代码中定义变量的数据类型,不管是显式的声明还是隐式的定义。静态类型语言的变量,一旦定义了数据类型,在运行时是不能动态改变的。比如C语言,它的典型用法如下:
void main()
{
int score1 = 0; // 变量score1在使用之前需要声明为int类型,否则编译报错
int score2 = 50;
score1 = score2 + 10;
// ......
}
动态类型:在运行阶段才检查变量的数据类型。Python就是一种动态类型语言,它的变量不需要声明数据类型,只有在运行时才动态确定其类型。通过上一节的几个小实验我们其实可以看出来,python的变量本质上是一个内存地址,本身没有类型,它的数据类型由其指向的对象来决定。比如下面的例子,在python中是可以正常运行的:
# 此时,tmp是一个整数类型
tmp = 100
print(type(tmp))
# 此时,tmp是一个字符串类型,类型可以动态改变
tmp = "hello, world!"
print(type(tmp))
它的输出是:
<class 'int'>
<class 'str'>
这种动态类型的特性,让python使用起来会更加简单,代码会更加简洁。但是它也会带来一些负面影响,比如无法在编译阶段发现问题,同时动态类型会带来运行时的一部分性能损耗。两者各有利弊。我们在使用python编程时,也建议随时搞清楚变量对应的数据类型,这样可以规避一些隐藏的问题。
本节课程的视频和实例源码下载方式:点击->我的主页,查看个人简介。
我尽量坚持每日更新一节。