
3.3.1 模块的使用
前面讲的编程都是在一个文件中进行的,无论是在Python的IDLE环境,还是在第三方软件,如PyCharm中进行,写完程序存盘后得到一个扩展名为py的文件,若想再次运行程序需重新将其打开。对于大型程序,只在一个文件中编程会使得程序代码特别多,不便于维护。为了解决这个问题,可以把一些功能相似的代码,如一些变量、函数、类分别存储到不同的py文件中,需要使用的时候,通过import语句把py文件中的函数、类导入即可。每个py文件可以成为一个模块,例如前面用的math模块、random模块,每个模块提供了很多函数,使用前需要用import语句导入模块。
1.模块导入方式
下面以上节用到的程序为例,说明模块的使用过程。Python导入模块使用“import模块名”语句。新建一个文件,在文件中输入以下内容,文件中含有两个函数total()和average(),还有一个类st,将文件保存到student.py文件中,如下所示。

再新建另外一个文件,输入如下内容,并保存到run.py文件中,如下所示。

导入模块语句import的格式如下所示:
import moduleName
或
importmoduleNameas alias
其中,alias是别名。当模块名很长时,用别名可以缩短模块名,如import studentas st,引用模块中变量、函数或类,需要在变量名、函数名或类名前加“moduleName.”或“alias.”,如student.total(79,85)或st.total(78,79)。
另外一种导入方式的格式如下:
from moduleName import member1,member2,…
或
from moduleName import*
其中,member表示被导入的变量名、函数名或类名,导入多个数据时,用逗号隔开;*表示导入模块中所有的变量、函数和类,在使用变量、函数和类时,可直接使用这些数据的名字,无须在变量名、函数名或类名前加“moduleName.”。例如下面的代码中st、total和average可以直接使用,无须加模块名。

2.设置模块搜索路径
在用import语句导入模块时,Python首先会在当前目录下查找,如果找不到,会在环境变量PYTHONPATH指定的目录中查找,如果还找不到,会在Python的安装目录下查找。以上目录通过sys模块的sys.path变量可以显示出来,如下所示。

如果读者想自己指定Python的搜索路径,可以通过以下三种方式进行设置。
第1种方式是修改系统环境变量PATHONPATH的值。在Windows中打开环境变量设置对话框,如图3-1所示,如果还没有PYTHONPATH变量,可以单击“新建”按钮,输入变量名PYTHONPATH和对应的路径;如果已经存在了,找到PYTHONPATH,然后单击“编辑”按钮,可以设置多个路径,路径之间用分号“;”隔开。设置好环境变量后,需要重新打开Python,设置才起作用。

图3-1 系统环境变量对话框
第2种方式是添加.pth文件。在Python的安装目录下有个Lib\site-packages目录,在该目录下创建一个扩展名为.pth的文件,在该文件中加入自己的路径即可。
第3种方式是往sys.path中临时添加,sys.path.append(path),如下所示。
