1.模块的介绍
模块就好比是工具包,要想使用这个工具包中的工具(就好比函数),就需要导入这个模块。
2.制作模块
为了让我们自己写的模块被python解释器知道,需要用sys.path.append(“路径”),但这种情况下,比如在交互模式下,如果关闭了,再开启,还要重新告知。
常用方法:设置PYTHONPATH环境变量。
vim /etc/profile
export PATH = /home/jack/python:$PAT
3.__all__
控制模块的导入行为
from test import *
时,为了防止把不需要的模块导入,在模块里边新建一个变量__all__
,放上将来要使用的函数,类,全局变量的名字,如果不放,别人就无法使用__all__ =["Tset","test"]
。
4. __init__.py
控制包的导入行为
包将有联系的模块组织在一起,即放到同一个文件夹下,并且在这个文件夹创建一个名字为__init__.py
文件,那么这个文件夹就称之为包。
这个__init__.py
控制着包的导入行为,在这个文件中, 定义一个__all__
变量,它控制着 from 包名 import *
时导入的模块,如__all__ = ["sendmsg"]
。
5.模块发布
编辑setup.py
from distutils.core import setup
#Python小白学习交流群:725638078
setup(name="dongGe", version="1.0", description="dongGe's module",author="dongGe",py_modules=['test.sendmsg', 'test.recvmsg'])
构建模块
python/python3 setup.py build
生成发布压缩包
python/python3 setup.py sdist
6.模块安装使用
-
找到模块的压缩包。
-
解圧。
-
进入文件夹。
-
执行命令python setup.py install。
-
模块的引入。
from 模块名 import 模块名或者*
7.给程序传参数
import sys
name = sys.argv[1]
8.循环导入
-
循环导入就是程序在导入某个模块的过程中,该模块里的函数又需要导入自身的这个模块,如此进入死循环。
-
避免循环导入:所有在开发的过程中,开发者们写的模块不能相互调用,即应该相互隔开,然后由架构师来负责整体的模块调用使用,也就是上下设计分层,降低耦合。
9.重新导入模块
模块被导入后,如果某一方更新了这个模块,但是import module不能重新导入模块,重新导入需用from imp import *
,然后再使用reload(test)即可重新导入。