模块(module)
如果不是写最简单的程序,就需要理解Python里模块机制及其使用技术。

在 Python 解释器的交互方式下写程序,一旦退出解释器,所写的代码就会全部消失。如果希望写长一点的程序,希望所写的程序能保存下来,就需要用编辑器建立 Python 程序(也称脚本),将其保存为文件,而后就可以在任何时候将其投入运行。

对于大程序的开发,可能需要把整个程序分为相互关联的许多文件,这些程序文件是逐步开发出来的,开发中还可能要根据情况修改已有的程序文件(逐步开发,更正发现的错误,增加或修改功能等),为此都需要基于模块的开发和程序组织工作。

程序文件和模块

Python 为以这种方式开发程序设计了一套方法,就是它的模块组织、管理和使用机制。Python 把一个内容为 Python 程序的文件称为一个模块,在一个模块里可以有一些 Python 定义(如函数定义)和一些语句。规定这种文件以 .py 作为扩展名。以文件的基本名(文件名除去扩展名部分之后的部分)作为模块的名字。

IDLE 是一个非常方便的 Python 程序编辑器,它与 Python 系统很好集成,用它可以很方便地写程序,试验运行和调试程序。在 IDLE 里可以通过快捷键 F5 或菜单命令要求解释器执行正在编辑的脚本。另外,还可以在解释器状态下,或者在另一个 Python 程序文件里(Python 模块里)用 import 装入运行自己编写好的模块,就像装入一个系统模块(例如 math 等)一样。实际上,还可以在 Windows 的 cmd 窗口里用命令行:

python prog.py
要求 Python 解释器执行 prog.py 里的脚本。安装 Python 系统时,通常会把以 .py 为扩展名后缀的文件注册为 Python 程序文件。如果这样,在一个文件夹中双击一个 .py 文件,操作系统就会启动 Python 解释器去执行这个文件(执行其中的模块)。

为简化讨论,下面把执行保存在一个文件里的 Python 程序上述各种方式统称为"执行一个模块"。

执行一个模块,就是执行其中的各种命令。注意,执行函数定义命令(和其他定义命令)的效果就是使这个函数被定义,或者说是基于该函数定义建立了一个函数对象,然后令给定函数名约束到这个函数对象。执行语句则可能建立一些变量并给它们覆以一定的值。

主程序和模块

在上述几种执行方式中,通过 import 执行模块的方式与其他方式有所不同。

对其他执行方式,被执行模块是 "作为主程序" 执行的(直接被解释器启动执行),而通过 import 执行的模块则是直接或间接地由于主程序的执行而被启动的,或是被主程序 import,或是被其他模块 import,而那个模块是直接或间接被主程序执行的。

我们将把由于被其他模块 import 而执行称为是 "作为模块执行",以与作为主程序执行相区别。

在任何模块被执行时,将有一个默认全局变量 __name__(name前后各加两个下划线字符)。如果该模块是通过 import 被执行的,__name__ 的值就是这个模块的名字(是个字符串)。如果它是作为主程序执行,__name__ 的值就是字符串 '__main__'。这种性质使人可以在模块里写出一些代码,使得只有在这个模块被作为主程序(或者只有被作为模块)执行时,这些代码才会被执行。在人们开发的Python模块里经常可以看到下面形式的片段:

if __name__ == "__main__":
    ... ...
    ... ...
只有这个模块被作为主程序执行时,这段代码才会执行。这是 Python 编程中的一种惯用法。
本页及相关页面(除另声明者外)由裘宗燕创建维护,可自由用于各种学习活动。其他使用需得到作者许可。