模块化编程的一般流程:
设计 API,进行功能描述。编码实现 API 中描述的功能。在模块中编写测试代码,并消除全局代码。使用私有函数实现不被外部客户端调用的模块函数。小例子:设计计算薪水模块的 API
""" 本模块用于计算公司薪水 """ company = "None" def yearSlary(monthSalary): """根据输入的月薪,计算出年薪""" return monthSalary*12 def daySalry(monthSalary): """根据输入的月薪,计算出日薪""" return monthSalary/22.5通过__doc__可以获得模块的文档字符串的内容。
from module import test1 print(test1.__doc__) print(test1.daySalry.__doc__)运行结果:
本模块用于计算公司薪水 根据输入的月薪,计算出日薪小例子:通过__name==“main”独立处理模块的测试代码。
company = "None" def yearSlary(monthSalary): """根据输入的月薪,计算出年薪""" return monthSalary*12 def daySalry(monthSalary): """根据输入的月薪,计算出日薪""" return monthSalary/22.5 if __name__ == "__main__": print(yearSlary(5000)) print(daySalry(5000))运行结果:
60000 222.22222222222223import 语句的基本语法格式如下: import 模块名 #导入一个模块 import 模块 1,模块 2… #导入多个模块 import 模块名 as 模块别名 #导入模块并使用新名字
import 加载的模块分为四个通用类别: a.使用 python 编写的代码(.py 文件); b.已被编译为共享库或 DLL 的 C 或 C++扩展; c.包好一组模块的包 d.使用 C 编写并链接到 python 解释器的内置模块;
当一个项目中有很多个模块时,需要再进行组织。我们将功能类似的模块放到一起, 形成了“包”。本质上,“包”就是一个必须有__init__.py 的文件夹。在Pycharm中,创建包会自动生成__init__.py,如图:
init.py 的三个核心作用:
作为包的标识,不能删除。用来实现模糊导入导入包实质是执行__init__.py 文件,可以在__init__.py 文件中做这个包的初始化、以及 需要统一执行代码、批量导入。如果是子包内的引用,可以按相对位置引入子模块 以 aa 包下的 module_AA 中导入 a 包下内容为例:
from .. import module_A #..表示上级目录 .表示同级目录 from . import module_A2 #.表示同级目录当我们导入某个模块文件时, 一般按照如下路径寻找模块文件(按照顺序寻找,找 到即停不继续往下寻找):
内置模块当前目录程序的主目录pythonpath 目录(如果已经设置了 pythonpath 环境变量)标准链接库目录第三方库目录(site-packages 目录).pth 文件的内容(如果存在的话)sys.path.append()临时添加的目录1.为模块文件创建如下结构的文件夹(一般,文件夹的名字和模块的名字一样):
2.在文件夹中创建一个名为『setup.py』的文件,内容如下:
from distutils.core import setup setup( name='dosth', # 对外我们模块的名字 version='1.0', # 版本号 description='这是第一个对外发布的模块,测试哦', #描述 author='yuehai', # 作者 author_email='****@qq.com', py_modules=['dosth.demo1','dosth.demo2'] # 要发布的模块 )3.构建一个发布文件。通过终端,cd 到模块文件夹mypack下面,再键入命令:
python setup.py sdist可使用命令 python setup.py install 进行本地安装模块。