Python学习笔记(二十六)
模块
模块的概念
模块是Python程序架构的一个核心概念
每一个以扩展名Py结尾的python源代码文件都是一个模块
在模块中定义的全局变量,函数,类都是提供给外界使用的工具
模块就好比是工具包,要像使用这个工具包中的工具,就需要先导入模块
模块的两种导入方式
1、import 导入
import 模块名1,模块名2
提示:在导入模块时,每个导入应该独占一行
导入之后
通过模块名.使用模块提供的工具 -- 全局变量、函数、类
使用as 指定模块的别名
如果模块的名字太长,可以使用as 指定模块的名称,以方便在代码中使用
import 模块名1 as 模块别名
注意:模块别名应该符合大驼峰命名法
from ..import导入
如果希望从某一个模块中,导入部分工具,就可以使用from 。。。import的方式
import 模块名 是一次把模块中所有工具全部导入,并且通过模块名/别名访问
从模块导入某一个工具
from 模块名1 import 工具名
导入之后
不需要通过模块名.
可以直接使用模块提供的工具 -- 全局变量、函数、类
注意:
如果两个模块,存在同名的函数,那么后导入模块的函数,会覆盖掉先导入的函数
开发时import代码应该统一写在代码顶部,更容易及时发现冲突
一旦发现冲突,可以使用as关键字给其中一个工具起一个别名
from 。。。import * (了解)
注意:
这种方式不推荐使用,因为函数重名并没有任何的提示,出现问题不好排查
模块的搜索顺序【扩展】
Python的解释器在导入模块时,会:
1、搜索当前目录指定模块名的文件,如果有就直接导入
2、如果没有,再搜索系统目录
在开发时,给文件起名,不要和系统的模块文件重名
Python中每一个模块都有一个内置属性__file__可以查看模块的完整路径
注意:如果当前目录下,存在一个random.py的文件,程序就无法正常执行了!
这个时候,Python的解释器会加载当前目录下的random.py而不会加载系统的random模块
原则--每一个文件都应该是可以被导入的
一个独立的Python文件就是一个模块
在导入文件时,文件中所有没有任何缩进的代码都会被执行一遍!
实际开发场景
在实际开发中,每一个模块都是独立开发的,大多都有专人负责
开发人员通常会在模块下方增加一些测试代码
仅在模块内使用,而被导入到其他文件中不需要执行
__name__属性
__name__属性可以做到,测试模块的代码只在测试情况下被运行,而在被导入时不会被执行
__name__是Python的一个内置属性,记录着一个字符串
如果是被其他文件导入的__name__就是模块名
如果是当前执行的程序__name__是__main__
在很多python文件中都会看到以下格式的代码
根据__name__判断是否执行以下方代码
包(Package)
概念
包是一个包含多个模块的特俗目录
目录下有一个特殊的文件__init__,py
包名的命名方式和变量名一致,小写字母+_
__init__.py
要在外界使用包中的模块,需要在__init__.py中指定对外界提供的模块列表
from . import 你要导入的模块列表
发布模块(知道)
如果希望自己开发的模块,分享给其他人,可以按照以下步骤操作
制作压缩包步骤
创建setup.py
setup.py文件
from distutils.core import setup setup(name="xx_message", # 包名 version="1.0", # 版本 description="XXXXX 发送和接收模块消息", # 描述信息 long_description="完整的发送和接收消息模块", # 完整描述信息 author="xxx", # 作者 author_email="XXXXXX@qq.com", # 作者邮箱 url="www.XXXXX.com", # 主页 py_modules=["xx_message.send_message", "xx_message.receive_message"])
有关字典参数的详细信息,可以参阅官方网站:
https://docs.python.org/2/distutils/apiref.html
2、构建模块
python3 setup.py build
3、生成发布压缩包
python3 setup.py sdist
注意:要制作哪个版本的模块,就使用哪个版本的解释器执行
安装模块
tar -zxvf xx_message-1.0.tar.gz
sudo python3 setup.py install
卸载模块
直接从安装目录下,找到安装模块的目录并且删除即可
pip 安装第三方模块
第三方模块通常是指由知名的第三方团队开发的并且被程序员广泛使用的python包/模块
列入pygame就是一套非常成熟的游戏开发模块
pip 是一个现代的,通用的python包管理工具
提供了对python包的查找,下载,安装、卸载等功能
安装和卸载命令
pip install pygame
pip uninstall pygame
pip3 install pygame
pip3 uninstall pygame