本文主要向您介绍三种导入自定义模块的方法。 文章通过示例代码对其进行了详细的介绍,对于大家的学习或者工作具有一定的参考学习价值。
前言
最近从廖雪峰的教程中学习了模块部分。 关于如何自定义一个模块,如果不明白的话,我们先看一下基本介绍:
模块
在计算机程序的开发过程中,随着编写的程序代码越来越多,一个文件中的代码会越来越长,维护起来也越来越困难。
为了编写可维护的代码,我们将许多函数分组到不同的文件中,使得每个文件包含相对较少的代码。 许多编程语言都使用这种组织代码的方式。 在.py中,.py文件称为模块()。
使用模块有什么好处?
最大的好处就是代码的可维护性大大提高。 其次,编写代码时不必从头开始。 编写模块后,可以在其他地方引用它。 当我们编写程序时,我们经常会引用其他模块,包括内置模块和第三方模块。
使用模块还可以避免函数名和变量名冲突。 具有相同名称的函数和变量可以存在于不同的模块中。 因此,我们自己编写模块时,不必考虑名称会与其他模块冲突。 但也要注意不要与内置函数名称冲突。 单击此处查看所有内置功能。
你可能还会想,如果不同的人写同名的模块怎么办? 为了避免模块名称冲突,引入了一种按目录组织模块的方法,称为()。
例如,文件 abc.py 是名为 abc 的模块,文件 xyz.py 是名为 xyz 的模块。
现在,假设我们的两个模块名称 abc 和 xyz 与其他模块冲突,那么我们可以通过包来组织模块,以避免冲突。 方法是选择一个顶级包名,例如存放在以下目录:
├─.py
├─ abc.py
└─ xyz.py
引入包后,只要顶层包名不与其他包名冲突,所有模块都不会与其他包名冲突。 现在,abc.py 的模块名称变为.abc,同样,xyz.py 的模块名称变为.xyz。
请注意,每个包目录下都会有一个 .py 文件。 该文件必须存在,否则该目录将被视为普通目录而不是包。 .py 可以是一个空文件,也可以有代码,因为 .py 本身是一个模块,它的模块名称是。
同样,可以有多级目录,形成多级包结构。 例如以下目录结构:
├─ 网络
│ ├─ .py
│ ├─ utils.py
│ └─
├─.py
├─ abc.py
└─xyz.py
该文件的模块名称为.web.www,两个文件utils.py的模块名称分别为.utils和.web.utils。
创建自己的模块时,应注意命名,以免与内置模块的名称冲突。 例如,如果系统自带了sys模块,那么你的模块就不能命名为sys.py,否则你将无法导入系统自带的sys模块。
.web 也是一个模块。 请注明该模块对应的.py文件。
概括
模块是可以使用其他模块并且也可以被其他模块使用的代码的集合。
创建自己的模块时,请注意:
模块是个好东西。 专家们开源共享了很多模块,这也加快了大家的开发速度。
因为刚开始,很多细节都不太明白。 当我在网上查找资料时,我发现大师给出的教程过于简洁,这使得我这个新手很难成功。
所以记录在这里。
开始
第一种,直接
这里有一个大前提,就是你的py执行文件和模块属于同一个目录(父目录),如下图:
我把模块提供的函数写在.py中,其中只提供了一个hi函数:
# pwcong 模块的 __init__.py # -*- coding: utf-8 -*- def hi(): print("hi")
直接向模块执行文件main.py:
# main.py # -*- coding: utf-8 -*- import pwcong pwcong.hi()
然后我们运行main.py,可以看到命令行窗口输出了一句hi。 第一种方法完成。
使用模块的方法是:先导入->然后输入.|,如上例中的.hi()
二、通过sys模块导入自定义模块的路径
如果可执行文件和模块不在同一个目录下,此时将无法直接找到自定义模块。 如下所示:
sys模块是内置的,所以我们导入自定义模块的步骤如下:
首先导入sys模块
然后使用sys.path.(path)函数导入自定义模块所在目录
导入自定义模块。
此时main.py是这样写的:
# main.py # -*- coding: utf-8 -*- import sys sys.path.append(r"C:\Users\Pwcong\Desktop\python") import pwcong pwcong.hi()
最后执行main.py文件,最终输出hi。 第二种方法就完成了。
第三种方式是通过pth文件找到自定义模块
这种方法的原理是利用系统变量,会扫描path变量的路径来导入模块,可以将其添加到系统路径中。 但我还是推荐使用pth文件添加。
模块和可执行文件目录结构如下图所示:
我们创建一个.pth文件,其内容为模块所在目录:
C:\用户\\\
将 .pth 文件放在此处:
安装目录\\Lib\site-
例如我的:
然后 main.py 导入并使用自定义模块:
# -*- coding: utf-8 -*- import pwcong pwcong.hi()
最后执行main.py文件,可以输出hi,第三种方式就完成了。