提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
一、模块化程序设计理念
1.概念进化史——量变引起质变
语句→函数→类和对象(内容)→模块(文件)→模块(文件)→包(文件夹)
2.标准库模块
模块也分为标准库模块和用户自定义模块
3.模块化编程的流程
模块化编程的一般流程:
- 设计API,进行功能描述:API(Application Programming Interface 应用程序编程接口)是用于描述模块中提供的函数和类的功能描述和使用方式描述。
- 编码实现API 中描述的功能。
- 在模块中编写测试代码,并消除全局代码。
- 使用私有函数实现不被外部客户端调用的模块函数。
4.创建
可以通过__doc__可以获得模块的文档字符串的内容。
通过特殊变量__name__可以获取模块的名称
二、模块的导入
1.import语句导入
import 语句的基本语法格式如下:
import 模块名 #导入一个模块
import 模块1,模块2… #导入多个模块
import 模块名as 模块别名 #导入模块并使用新名字
通过import 语句实现模块的导入和使用,import 本质上是使用了内置函数__import__()。
2.from…import导入
基本语法格式如下:
from 模块名import 成员1,成员2,…
如果希望导入一个模块中的所有成员,则可以采用如下方式:
from 模块名import *
【注】尽量避免“from 模块名import *”这种写法,很有可能,会覆盖掉你之前已经定义的名字,而且可读性极其的差。
3.import 语句和from…import 语句的区别
import 导入的是模块。from…import 导入的是模块中的一个函数/一个类。如果进行类比的话,import 导入的是“文件”,我们要使用该“文件”下的内容,必须前面加“文件名称”。from…import 导入的是文件下的“内容”,我们直接使用这些“内容”即可,前面再也不需要加“文件名称”了。
4.import()动态导入
使用__import__()动态导入指定的模块
s = "math"
m = __import__(s) #导入后生成的模块对象的引用给变量m
print(m.pi)
一般不建议自行使用__import__()导入,其行为在python2 和python3 中有差异,会导致意外错误。如果需要动态导入可以使用importlib 模块。
import importlib
a = importlib.import_module("math")
print(a.pi)
5.模块的加载
一个模块无论导入多少次,这个模块在整个解释器进程内有且仅有一个实例对象。确实需要重新加载一个模块,这时候可以使用:importlib.reload()方法:
import test02
import test02
print("####")
import importlib
importlib.reload(test02)
三、包的使用
1.创建
本质上,“包”就是一个必须有__init__.py 的文件夹。。在要创建包的地方单击右键:New–>Python
package 即可。pycharm 会自动帮助我们生成带有__init__.py 文件的包。
2. 导入包
需要导入module_AA.py。方式如下:
- import a.aa.module_AA
在使用时,必须加完整名称来引用,比如:a.aa.module_AA.fun_AA() - from a.aa import module_AA
在使用时,直接可以使用模块名。比如:module_AA.fun_AA() - from a.aa.module_AA import fun_AA 直接导入函数
在使用时,直接可以使用函数名。比如:fun_AA()
【注】1. from package import item 这种语法中,item 可以是包、模块,也可以是函数、
类、变量。2. import item1.item2 这种语法中,item 必须是包或模块,不能是其他。
导入包的本质其实是“导入了包的__init__.py”文件。这样,可以在__init__.py 中批量导入我们需要
的模块,而不再需要一个个导入。
3.包内引用
以aa 包下的module_AA 中导入a包下内容为例:
from … import module_A #…表示上级目录.表示同级目录
from . import module_A2 #.表示同级目录
4.sys.path 和模块搜索路径
按照顺序寻找,找到即停不继续往下寻找:
- 内置模块
- 当前目录
- 程序的主目录
- pythonpath 目录(如果已经设置了pythonpath 环境变量)
- 标准链接库目录
- 第三方库目录(site-packages 目录)
- .pth 文件的内容(如果存在的话)
- sys.path.append()临时添加的目录
使用sys.path 查看和临时修改搜索路径
import sys
sys.path.append("d:/")
print(sys.path) #打印当前模块搜索的路径
四、模块发布和安装
1.本地发布
2.本地安装模块
将发布安装到你的本地计算机上。仍在cmd 命令行模式下操作,进setup.py 所在目录,键入命令:python setup.py install
3.上传模块到PyPI
4. 让别人使用你的模块
模块发布完成后,其他人只需要使用pip 就可以安装你的模块文件。比如:
pip install package-name