目标
模块袋
发布模块
01. 模块
1.1模块概念模块是Python程序架构的核心概念。
每个以扩展名py结尾的Python源代码文件都是一个模块。
模块名也是一个标识符,需要符合标识符的命名规则。
模块中定义的全局变量、函数和类都是提供给外界直接使用的工具。
模块就像工具箱。如果你想使用这个工具包中的工具,你需要先导入这个模块。
1.2导入模块的两种方式
1)进口进口
导入模块名称1,模块名称2
提示:导入模块时,每个导入都应该有一个专用行。
导入模块名称1
导入模块名称2
导入后
通过模块名使用模块——提供的工具全局变量、函数和类。
使用as指定模块的别名。
如果模块的名称太长,可以使用as来指定模块的名称,这样便于在代码中使用。
将模块名称1作为模块别名导入
注:模块别名应符合大驼峰命名法。
2)导入2)从…导入
如果您想从模块中导入一些工具,可以使用from … import方法。
导入模块名称是一次性导入模块中的所有工具,并通过模块名称/别名进行访问。
#从模块导入工具
从模块名称1导入工具名称
导入后
不需要模块名称。
可以直接使用模块——提供的工具全局变量、函数和类。
注意
如果两个模块具有相同名称的函数,则后来导入的模块的函数将覆盖先导入的函数。
开发时,导入代码要统一写在代码顶部,这样更容易及时发现冲突。
一旦发现冲突,您可以使用as关键字来别名其中一个工具。
从…导入*(知道)
#从模块导入所有工具
从模块名称1导入*
注意
不建议使用这种方法,因为没有提示重复的函数名,并且不容易排除问题。
1.3模块的搜索顺序[扩展]
当导入模块时,Python的解释器将:
在当前目录中搜索指定模块名的文件,如果有直接导入。
如果没有,请再次搜索系统目录。
开发时,命名文件,不要复制系统的模块文件。
Python中的每个模块都有一个内置的属性文件来查看模块的完整路径。
例子
随机导入
#生成一个从0到10的数字
rand=random.randint(0,10)
印刷(兰特)
注意:如果当前目录下有一个random.py文件,程序无法正常执行!
此时Python的解释器会在当前目录下加载random.py,而不是系统的random模块。
1.4原则——每个文件都应该可以导入。
独立的Python文件是一个模块。
导入文件时,文件中没有任何缩进的所有代码都将被再次执行!
实际开发场景
在实际开发中,每个模块都是独立开发的,大部分都有专门的人员负责。
开发人员通常会在模块下添加一些测试代码。
仅在模块中使用,但不执行导入其他文件。
名称属性
name属性可以做到这一点,测试模块的代码只会在测试用例中运行,而不会在导入时执行!
Name是Python的内置属性,它记录了一个字符串。
如果它是由其他文件导入的,则该名称是模块名称。
如果是当前正在执行的程序,则名称为main
在许多Python文件中,您可以看到以下格式的代码:
#导入模块
#定义全局变量
#定义类
#定义函数
#在代码的底部
def main():
# .
及格
#根据__name__确定是否执行以下代码
if __name__=='__main__':
main()
02. 包(Package)
概念包是包含多个模块的特殊目录。
目录中有一个特殊的文件init.py。
包名的命名方法与变量名相同,小写字母_
利益
使用导入包名称一次导入包中的所有模块。
案例演练
创建新的hm_message包
在目录中,创建两个新文件send_message和receive_message。
在send_message文件中定义一个发送函数。
在receive_message文件中定义接收函数。
用于直接从外部导入hm_message的包
init.py
要在外界使用 包 中的模块,需要在 init.py 中指定 对外界提供的模块列表# 从 当前目录 导入 模块列表 from . import send_message from . import receive_message03. 发布模块(知道)
如果希望自己开发的模块,分享 给其他人,可以按照以下步骤操作
3.1 制作发布压缩包步骤
创建 setup.pysetup.py 的文件from distutils.core import setup
setup(name="hm_message", # 包名
version="1.0", # 版本
description="itheima's 发送和接收消息模块", # 描述信息
long_description="完整的发送和接收消息模块", # 完整描述信息
author="itheima", # 作者
author_email="itheima@itheima.com", # 作者邮箱
url="www.itheima.com", # 主页
py_modules=["hm_message.send_message",
"hm_message.receive_message"])
有关字典参数的详细信息,可以参阅官方网站:
https://docs.python.org/2/distutils/apiref.html
构建模块$ python3 setup.py build 生成发布压缩包 python3 setup.py sdist注意:要制作哪个版本的模块,就使用哪个版本的解释器执行!
3.2 安装模块
$ tar -zxvf hm_message-1.0.tar.gz $ sudo python3 setup.py install卸载模块
直接从安装目录下,把安装模块的 目录 删除就可以
$ cd /usr/local/lib/python3.5/dist-packages/ $ sudo rm -r hm_message*3.3 pip 安装第三方模块
第三方模块 通常是指由 知名的第三方团队 开发的 并且被 程序员广泛使用 的 Python 包 / 模块
例如 pygame 就是一套非常成熟的 游戏开发模块
pip 是一个现代的,通用的 Python 包管理工具
提供了对 Python 包的查找、下载、安装、卸载等功能
安装和卸载命令如下:
# 将模块安装到 Python 2.x 环境 $ sudo pip install pygame $ sudo pip uninstall pygame # 将模块安装到 Python 3.x 环境 $ sudo pip3 install pygame $ sudo pip3 uninstall pygame在 Mac 下安装 iPython
$ sudo pip install ipython在 Linux 下安装 iPython
$ sudo apt install ipython $ sudo apt install ipython3