1
Python编程从入门到实践
1.9.7.1 5.7.1 模块及其引用方法
5.7.1 模块及其引用方法

模块是一个以.py为扩展名的文件,文件由语句及函数组成。例如,文件ABC.py是一个名为ABC的模块。文件定义成模块后,只要在其他函数或者主函数中引用该模块,就可以通过调用该模块中的函数来实现,达到代码重用的目的。此外,使用模块还可以避免函数名和变量名的冲突。在不同的模块中可以使用相同名称的函数和变量。

1.模块的引用

主程序及其他程序中如果要使用模块中定义的变量或者函数,首先要引用模块。引用模块的方法见表5-2。

表5-2 模块引用方法

2.搜索路径

引用模块时,解释器会进行搜索,以找到模块所在的位置。搜索按以下顺序进行。

①当前工作目录下,即包括import语句的代码。

②PYTHONPATH(通过环境变量进行设置)。

③Python默认的安装路径。

所有搜索路径都存放在系统内置模块sys的path变量中,可以使用以下方式查看。

>>>import sys

>>>sys.path

输出类似以下的结果来显示当前环境的搜索路径(路径示范,并非全部路径)。

['','C:\\Program Files(x86)\\Python37-32\\Lib\\idlelib','C:\\Program Files(x86)\\Python37-32\\python37.zip','C:\\Program Files(x86)\\Python37-32\\DLLs','C:\\Program Files(x86)\\Python37-32\\lib','C:\\Program Files(x86)\\Python37-32','C:\\Program Files(x86)\\Python37-32\\lib\\site-packages']

其中,路径列表的第一个元素为空字符串,代表当前目录。导入模块时,解释器会按照列表的顺序搜索,直到找到第一个模块。如果模块所在路径不在搜索路径中,也可以调用append函数来增加模块所在的绝对路径。例如:

>>>sys.path.append("d:\1")

则将需要的路径增加到搜索路径中。这个方法在重启解释器时会失效。

3.模块的__name__属性

模块的初始化只能在该模块第一次被引用时,即遇到import时执行,这样可以避免模块被多次执行。如果想知道模块是自己运行的还是被其他模块引入的,可以使用__name__。在例5.17中,bino模块中有如下代码。

表示如果模块是自己运行的,即运行该模块的代码__name__属性值为__main__,则只要输入3个数,再调用sum()函数,即可完成二项式的计算。

4.dir函数

内置函数dir()返回当前模块或指定模块中定义的对象名称。例如,要显示sys模块中定义对象的名称,可以使用如下代码(只给出了部分值,要查看全部值,请在交互环境中运行该函数)。

dir()函数调用时如果没有参数,例如:

则显示当前定义的模块和属性的名称。