1. 模块
模块:即工具包,单个Python文件就是一个模块,想要使用这个工具包中的工具(就好比函数),就需要导入这个模块。
1.1 模块导入方式
导入模块的过程实质是执行文件 (.py) 的过程
# 方式 1:
import 模块名1, 模块名2
# 方式 2:
import 模块名.函数名
# 方式 3:
from 模块名 import 函数名/变量名
# 方式 4:避免导入的模块名或函数名过长,提升代码的可读性
import 模块名 as 模块名的别名
# 方式 5:导入模块中的所有项目,不建议过多使用
from 模块名 import *
1.2 常见的模块内置属性
- __name__:模块名称。如果作为模块导入另一文件中,此时的模块名称为文件名;如果不是作为模块导入,此时的模块名为 “__mian__”。
常见的应用场景:测试代码的执行,python在执行一个文件时利用变量 __name__,根据__name__变量的结果判断,是直接执行的python脚本还是被引入执行的,从而能够有选择性的执行测试代码。代码示例:
"""
File: my_test.py
Author:
Date: 2019-12-22
Connect: 123456
Description:
"""
def my_test():
print("****test****")
"""
判断模块名称:
1). 如果该模块导入至另一文件,__name__ == "my_test"
2). 如果模块不是进行导入, __name__ == "__main__"
"""
if __name__ == "__main__":
my_test()
- __file__:返回文件的绝对路径
- __doc__:指向文件的帮助文档
- __all__:当利用 from 模块名 import * 导入模块时,限制导入的功能或属性
# __all__的使用方式,将可以利用 from 模块名 import * 方式导入的功能名和变量名存储的列表中
__all__ = ["fun1", "fun2", "arg1"]
2. 包
包:将有联系的模块放在同一个文件夹下,并且在这个文件夹下创建一个名为__init__.py的文件,那么这个文件夹称为包,包能有效避免模块名称冲突问题,让应用组织结构更加清晰。
一个普通的python应用程序目录结构:
package_a # 包:名为 package_a 的文件夹
|—— __init__.py
|—— model_a1.py # 模块:.py 文件
|—— model_a2.py # 模块:.py 文件
|—— ...
3. 模块的制作与发布
- 为模块文件创建一个文件夹,并将模块文件复制到这个文件中 (一般,文件夹的名字和模块的名字一样)
- 在文件夹中创建一个名为『setup.py』的文件,内容如下:
from distutils.core import setup
setup(
name='verifycode',
version='1.0.0',
author='xiaoma',
author_email='[email protected]',
description="实现验证码图片生成器",
py_modules=['verifycode']
)
同时,当前的目录信息如下:
3. 构建模块,在terminal中输入
> python3 setup.py build
执行结果:
同时,当前的目录信息如下:
4. 生成压缩包,在terminal中输入
> python3 setup.py sdist
执行结果:
同时,当前的目录信息如下:
4. 模块的安装与使用
- 找到模块的压缩包
- 解压
- 进入文件夹
- 执行命令sudo python setup.py install