Python从入门到精通
上QQ阅读APP看书,第一时间看更新

1.2 Python程序的编写与运行

现代计算机基于冯 ·诺依曼体系,由运算器、控制器、存储器、输入设备和输出设备五大部分组成,这是它的硬件组成部分。冯 ·诺依曼体系结构如图1-12所示。计算机使用者是不能直接操作这些硬件的,需要通过操作系统来访问这些硬件,操作系统是一种复杂的软件。

图1-12

Windows是大众熟知的计算机操作系统,平常使用的办公软件、浏览器和音/视频播放软件等都是运行在操作系统这个容器中的,而与硬件交互的工作都是由操作系统完成的。

总之,计算机系统由硬件和操作系统构成,在这两者的共同作用下,程序员编写的程序才得以在计算机中运行。下面主要介绍Python程序是如何在计算机中运行的。

笔者有话说

在本节的内容中,初学者只需大概了解Python程序在计算机中的运行过程即可,先建立一个整体的认识。这是一个很有效的学习方法。

1.2.1 磁盘文件helloworld.py

Python文件以.py作为扩展名。在计算机桌面上创建一个TXT文本文件,然后输入以下代码,编写完代码后,直接将文件名修改为helloworld.py。

# 以下代码必须顶格
print("hello world") 

文件helloworld.py是保存在磁盘中的文本文件,与用记事本创建的.txt文件并无本质区别。现代计算机基于冯 ·诺依曼体系,它只能理解二进制数据,Python程序代码是文本字符,是不能直接在计算机中运行的,所以需要借助某种翻译器,将Python源代码翻译成能被计算机理解的二进制指令。其中,安装的Python解释器就是一种程序源代码翻译器。

编程小知识

二进制数据是用0和1两个数码来表示的数,它的基数为2。现代计算机系统基于冯 ·诺依曼体系,使用的是二进制编码系统。

1.2.2 Python解释器

解释器(Interpreter)本质上是一种计算机程序,这类程序将程序员用编程语言编写的代码一行一行地翻译成字节码,字节码最终被翻译成机器指令,然后才能在计算机系统中运行。

解释器是逐行解释运行程序代码的,不会一次将整个程序转译,每次运行程序时都要先转成另一种语言再运行,因此解释器的程序运行速度比较缓慢。

这里以1.2.1小节中的Python代码来举例,其执行流程如下。

第1步: Python将代码print("hello world")转译成字节码。

第2步:将字节码载入内存。

第3步: Python逐条执行内存中的Python字节码。

笔者有话说

解释器的程序运行速度缓慢是相对于编译器来说的。编译器也是一种计算机程序。相比解释器的逐行运行,编译器有一个编译过程,通过这个编译过程,一次性将全部程序源代码转译成能被计算机执行的机器指令。Python是解释型语言,而C语言是广为开发者所知的编译型语言。

1.2.3 程序的字节码

字节码是Python程序的中间形式,一条Python语句会对应多条字节码指令。这里不细究字节码指令的具体形式,打一个简单的比方让初学者理解:假设print("hello world")被转译后的字节码指令为a,b,c,那么Python解释器会逐条执行a,b,c这些指令。

1.2.4 内存与CPU

helloworld.py程序是通过计算机中的输入设备(键盘)将代码逐行输入文件中的。在执行这个Python程序前,它被保存在硬盘中。读者已经知道,计算机由运算器、控制器、存储器、输入设备和输出设备组成,硬盘就是计算机的外存储器。有外存储器当然也有内存储器,常说的内存就是内存储器。

不论是解释器还是编译器,待执行的指令最终被载入计算机内存中。CPU通过控制器从内存中读取指令,再执行算术运算和逻辑运算。

编程小知识

内存:计算机中的程序都是在内存中运行的,内存也被称为内存储器或主存储器,其存储的是程序中的数据和指令。

CPU:中文释义为中央处理单元,是计算机的核心部件,负责执行计算机指令,主要由运算器和控制器构成。

1.2.5 输出到命令行

在执行完Python程序后,屏幕上会显示结果,如图1-13所示。CPU在执行完Python源程序转译后的机器指令以后,将存储在内存中的数据"hello world"字符串读取到CPU的寄存器中,再从寄存器中复制到输出设备(显示器),就能在屏幕上显示hello world的输出结果。

图1-13

编程小知识

寄存器是CPU的寄存器阵列,这些寄存器用于在内存与CPU之间暂存数据。

1.2.6 技术总结

本节主要包含以下6个重要的知识点,请读者多加巩固。

现代计算机基于冯 ·诺依曼体系,由运算器、控制器、存储器、输入设备和输出设备五大部分组成。

Python是一种解释型语言,Python解释器先将Python源程序转译成Python字节码,再逐行解释执行字节码指令。

计算机只能理解二进制数据,程序员编写的代码需要转译成二进制指令才能被执行。

硬盘是计算机的外存储器,存储了程序源代码;内存是计算机的内存储器,计算机中的程序都是在内存中运行的。

CPU是计算机的核心部件,主要由运算器和控制器构成,负责执行计算机指令。

CPU将内存中的数据复制到输出设备中,这样才能在显示器等终端设备中看到程序的输出结果。