Python3 模块
Python3 模块其实就是一些后缀名是.py的名字,当写好一个py脚本的时候可以通过别的py脚本 来import导入,导入方法有两种:
import 语句
import test 这样就导入了一个test的模块,当解释器遇到import语句时,会先搜索当前路径下的模块,若当前没有则会去系统路径里面搜索。
系统存放所有模块路径:,导入成功后,调用这样写 导入的模块名.xxx(导入的模块名.定义的函数名、方法名等等)
from…import 语句
from . import aaa
这样就导入了当前目录下的aaa模块,如果是导入一个模块的函数名或方法名: from aaa import a
需要调用直接可以写 模块名.函数名()
From…import* 语句
把一个模块的所有内容全都导入到当前的命名空间,这样虽然方便,但是有风险。若两个模块定义了相同的函数名和方法名,就重复了。
__name__属性
一个模块被另一个程序第一次引入时,其主程序将运行。如果我们想在模块被引入时,模块中的某一程序块不执行,我们可以用__name__属性来使该程序块仅在该模块自身运行时执行。
例:
当别的程序引用的时候就变成了程序他人运行:
__all__属性
如上图,在一个程序中写上__all__属性的时候,表示把下面的函数名当做字符串写到列表中,什么意思呢?当另一种程序导入这个模块的时候只能调用这个程序的a函数,其它函数名或类名无法调用
__init__属性
我们可以把一些关联性强的程序放到一个文件夹中,例如这样。
有一个test目录,里面存放了a.py b.py两个程序,但是__init__.py这个文件是一定要存在的空的也行,不然导入文件夹test这个模块之后调用没有效果。
__init__.py文件里也可以这样写:
这样调用的时候可以直接调a模块了。这个程序就叫做一个包
模块的发布、安装
当我们把一些程序放到一个目录里面,需要调用时,可以发布出来在安装,安装的时候会把这个整个程序放到系统路径的模块中,这样就不用每次进入到这个程序的相对路径然后导入了、
发布的时候需要在当前目录下建立一个setup.py,格式都是固定的,按照写就行了
1.发布,python3 setup.py build
2.打包:python3 setup.py sdist,然后会有一个dist目录,里面是已经打包好的程序。
,
3.安装,可以先把这个tar.gz文件拷贝到其它目录,或者其它同事电脑上,然后解压,进入到解压后的目录执行python3 setup.py install,这样这个程序就会加载到系统路径的模块了。