学完此次课程,我能做什么?
通过此次课程,我们将学会如何自定义自己的模块和包,以及如何引用到自己的项目中,从而实现代码的复用。
学习此次课程,需要多久?
5-10分钟
课程内容
什么是Python的标准库?
Python在标准安装中,还带了一组模块他们就是标准库。简单地说就是系统自带了一些方便我们使用的方法,他们统称为标准库。
Python如何自定义模块?
- 自定义模块与当前代码同目录

自定义模块hello.py 与 1.py同一目录
hello 模块中 定义了一个模块方法

使用模块:

此种方法优点:不需要额外的配置,在同目录下,直接和使用内部模块一样 导入即可使用。
缺点很明显:模块存在的意义在提高代码的复用性,使多个程序可以共享代码,如果每个模块都要单独放在相应的程序下,与出发点有点背道而驰,所以不建议大家使用此方法,了解一下即可。
- 在Python代码中指定模块位置
首先在/home/dely/github/python/library2目录下定义一个模块run.py

在下面的Demo中使用run 模块中的 hi函数

此方法优点:公共模块可以同一管理,无需放在项目所在目录下,提高的复用性。
缺点是:引用前,需制定模块所在位置。
- 通过环境变量指定,python模块所在位置

上图中,我已经把PYTHONPATH添加到环境变量中,如何制定环境变量不在这里说了,大家根据自己系统版本去谷歌或者百度吧。
配置好环境变量后,在library目录下写一个fly模块

在下面的Demo中使用fly模块的 hi 函数

优点:代码复用,无需在代码中制定模块路径,无多余代码,和使用标准库一样
缺点:移植性差,不同的电脑需要配置环境变量
以上三种常用方法,大家可以按照自己的需求使用。
考虑一个问题?
按照上面的方法,管理一个小的项目完全没有问题,但是有没有考虑一下,如果我们有1000个不同功能的模块,怎么办?全部放在一个文件夹?
答案肯定是NO.
我们这个时候就需要使用包,来管理我们的模块。
为了演示方便,我直接放在和项目同目录下,先看一下目录结构:

eat 和 say 模块都只有一个hi方法。

重点要注意的图上已经标明了。
import 导入的包,必须使用包.模块名.方法名 使用
from..import 方式导入的包,可以直接使用模块名.方法名 使用
小结
本次课程我们主要学习如何自定义模块,自定义包,以及如何导入自定义的包。使用过程中还会有一些坑,大家在练习的时候,踩踩看吧。
接下来学习什么?
下一课,我们讲学习常见的Python内置模块。只有熟悉了常用的模块和方法,我们在做项目的时候才能游刃有余,灵活使用。
关注公众号,回复 Python基础 下载全部代码+PDF版电子书

网友评论