我们今天来说说模块的导入、创建以及打包
1.导入模块(以py为文件格式的文件都可以叫做模块)
import 模块名1
import 模块名2
2.用import 模块名 as 模块别名 ,来在文件中模块别名(第一个首字母大写)
Import 模块名 as 模块别名
3.从模块中导入某一个工具
from 模块名1 import 工具名
4.当从2个不同的模块导入相同的工具名或者函数名时,后导入的会把先导入的给覆盖掉。如果真的要导入相同的函数时,可以给其中一个取个别名
5.导入模块中所有工具
from 模块名 import*
不推荐使用,因为如果遇到有两个重名的工具或者函数,问题会很难排查!
6.在开发时,给文件起名,不要和系统的模块名重名
可以使用模块的内置属性__file__
来看看模块的路径,来看看你使用的模块到底是自己的还是系统的
print(模块名.__file__)
7.模块可以向外界提供全局变量、函数、类,模块被导入时,文件中所有没有任何缩进的代码都会被执行一遍。使用__name__
可以兼顾测试和导入两种模式,它可以做到,测试模块只在测试情况下运行,而被导入时不会被执行。
1>__name__
是python的一个内置属性,记录着一个字符串
2>如果是被其他文件导入的,__name__
就是模块名
3>如果是执行当前的程序,__name__
是___main___
看个例子:
这是我们需要导入的一个模块,模块内有一个方法Dog()
def Dog() :
print('我是哮天犬!汪汪汪!')
if __name__ == '__main__' : #把__name__放在需要被导入的模块中,用于在这个文件中检测Dog()方法是否有效
print(__name__)
Dog()
Dog()
结果为:
__main__
我是哮天犬!汪汪汪!
我是哮天犬!汪汪汪!
可以看到在当前模块中print(__name__)
输出的是 __main__
输出后再执行Dog(),根据代码跳出去再执行一遍
再来看看,当这个模块被导入时(上面的模块名叫test_需要导入的模块
):
import test_需要导入的模块
print('这句话用于检验__name__的功能!')
结果为:
我是哮天犬!汪汪汪!
这句话用于检验__name__的功能!
哎,可以看到test_需要导入的模块
这个模块中的
if __name__ == '__main__' : #把__name__放在需要被导入的模块中,用于在这个文件中检测Dog()方法是否有效
print(__name__)
Dog()
并没有被执行,而是执行了这个判断语句之外的Dog()
函数
8.包(package)是一个包含多个模块的特殊目录,并且目录下有个特殊的文件__init__
1>使用import 包名
可以一次性导入包中所有模块
2>如果要在外界使用包中的模块,需要在__init__.py
中指定对外界提供的模块列表
从 当前目录 导入 模块列表
from . import 模块名1
from . import 模块名2
比如我创建了一个包animal_package
然后包里有Dog
和Cat
两个模块
要使外界可以导入并使用包中的模块,我们需要在包中同时建立一个__init__.py
文件,文件里的代码为
from . import Dog
from . import Cat
这样一个包就完成了!
最后就是将我们的模块包做成压缩包并且下载使用
步骤:
1>创建setup.py
(把setup.py
文件和你的包放在同一文件内)
from distutils.core import setup
setup(name='animal_package', #包名
version='1.0', #版本
description="Blue's 猫狗互动模块", #描述包的信息
long_description='简单的猫狗互动模块', #详细地描述包的信息
author='Blue', #作者
author_email='2458682080@qq.com', #作者邮箱
url='https://blog.csdn.net/qq_43403025', #作者个人网页
py_modules=['animal_package.Cat',
'animal_package.Dog'])
这是一个固定的格式,里面的一些信息可以更改!
2>构建模块
Python setup.py build
用window+R
打开命令行,然后cd 到你模块所在的文件夹,然后执行这个命令
执行后,文件夹会出现一个build文件
3>生成发布压缩包
Python setup.py sdist
成功后,文件夹内
这样之后用pip install 包名
来安装你的包!
安装完成后可以在lib>site-packages
里看到你自己的包
然后打开你的python解释器,导入这个包并执行一下试试!
先用import 包名
导入你的包,导入后执行方法
执行成功!