学科分类
目录
基础

自定义模块

一般在进行程序开发时,不会将所有代码都放在一个文件中,而是将耦合度较低的多个功能写入不同的文件中,制作成模块,并在其它文件中以导入模块的方式使用自定义模块中的内容。

Python文件中的每个文件都可以作为一个模块存在,文件名即为模块名。假设现有一名为module_demo的Python文件,该文件中的内容如下:

age = 13
def introduce():
    print(f"my name is itheima,I'm {age} years old this year.")

module_demo文件便可视为一个模块,该模块中定义的introduce()函数和age变量都可在导入了该模块的程序中使用。

与标准模块相同,自定义模块也通过import语句和from…import…语句导入。

接下来使用import语句导入module_demo模块,并使用该模块中的introduce()函数,示例代码如下:

import module_demo
module_demo.introduce()
print(module_demo.age)

运行代码,结果如下所示。

my name is itheima,I'm 13 years old this year.
13

若只使用module_demo模块中的introduce()函数,也可使用from…import…语句导入该函数。示例代码如下:

from module_demo import introduce
introduce()

运行代码,结果如下所示。

my name is itheima,I'm 13 years old this year.

在程序开发过程中,如果需要导入其它目录下的模块,那么可以将被导入模块的目录添加到Python模块的搜索路径中,否则程序会因搜索不到模块路径而出现错误下面以添加module_demo模块所在的路径为例,具体操作步骤如下。

首先,通过sys.path查看当前模块的搜索路径,具体代码如下。

import sys
print(sys.path)

运行代码,结果如下所示。

['D:\\Python项目\\自定义模块', 'D:\\Python项目',
'D:\\Python3.7.2\\python37.zip','D:\\Python3.7.2\\DLLs',
'D:\\Python3.7.2\\lib', 'D:\\Python3.7.2', 'D:\\Python项目\\venv', 
'D:\\Python项目\\venv\\lib\\site-packages', 
'D:\\Python项目\\venv\\lib\\site-packages\\pip-10.0.1-py3.7.egg']

由以上结果可知,sys.path会返回一个包含多个搜索路径的列表。

然后,将module_demo模块所在的路径添加到sys.path中,代码如下。

sys.path.append("D:\Python项目\模块使用")

再次查看sys.path,可看到刚刚添加的路径:

['D:\\Python项目\\自定义模块', 'D:\\Python项目',
'D:\\Python3.7.2\\python37.zip','D:\\Python3.7.2\\DLLs',
'D:\\Python3.7.2\\lib', 'D:\\Python3.7.2', 'D:\\Python项目\\venv', 
'D:\\Python项目\\venv\\lib\\site-packages', 
'D:\\Python项目\\venv\\lib\\site-packages\\pip-10.0.1-py3.7.egg',
'D:\Python项目\块使用']

最后,使用“模块使用”目录下的module_demo模块,具体代码如下。

import sys
import module_demo
module_demo.introduce()

运行代码,结果如下所示。

my name is itheima,I'm 13 years old this year.
点击此处
隐藏目录