模块的概念
模块是python程序架构的一个核心概念。
- 每一个以.py结尾的python源代码都是一个模块。
- 模块名也是一个标识符,需要符合标识符的规则。
- 在模块中定义的全局变量、函数和类都是提供给外部使用的工具。
- 模块就好比工具包,要想使用这个工具包中的工具,就需要导入这个模块。
- 导入模块使用 import
语法:
# 方式1
import 模块1,模块2
# 方式2:推荐使用
import 模块1
improt 模块2
导入模块是指定别名
语法:
# 注意:模块的别名应该符合大驼峰法
import 模块名 as 别名
from ... import
- 如果希望王从某一个模块中,导入部分工具,就可以使用from ... import的方式
- import是一次性把模块中的所有内容全部导入,并且通过模块名/别名访问
# 从模块导入某一个工具
from 模块名1 import 工具名
from hm_01_测试模块1 import Dog
from hm_01_测试模块1 say_hello
# 使用时不再需要模块名
sayHello()
wangcai = Dog()
注意:如果两个模块中,存在相同的函数名,那么后倒入的模块会覆盖掉先导入的模块的函数,如果希望同时使用两个函数,可以使用别名的方式来调用。
from hm_01_测试模块1 say_hello as module_say_hello
from hm_01_测试模块2 say_hello
say_hello
module_say_hello
from ... import * 也可以一次性导入所有内容,但不推荐使用。
模块搜索顺序
python解释在导入模块时,会:
- 搜索当前目录指定的模块名文件名,如果有就直接导入
- 如果没有,在搜索系统目录
python中,每一个模块都有一个内置属性__file__可以查看模块的完整路径
注意:在开发中,不要命名和系统模块同名的文件。
import random
print(random.__file__)
rand = random.randint(0, 10)
print(rand)
开发原则
- 一个独立的python文件就是一个模块
- 在导入文件时,文件中所有没有任何缩进的代码都会被执行一遍。
__name__属性
- __name__属性可以做到,测试模块的代码只在测试情况下运行,而在被导入时不会被执行。
- __name__是一个python的一个内置属性,记录着一个字符串
- 如果是被其他文件导入的,__name__就是一个模块名
- 如果当前执行的程序__name__是__main__
def say_hello():
print("你好,这是测试")
# 如果直接执行莫夸夸,__main__,否则是模块名
if __name__ == "__main__":
print(__name__)
# 文件名被导入时,能够直接执行的代码不需要被执行
print("小明开发的模块")
say_hello()
包的概念
- 包是一个包含多个模块的特殊目录
- 目录下有一个特殊的文件__init__.py
- 包的命名方式和变量一样,小写字符 + _
- 使用import 包名可以一次性导入所有模块
创建包的方式有两种:
- 点击右键-新建目录-创建__init__.py文件
- 点击右键-新建python package即可
要在外界使用包中模块,需要在__init__.py文件中指定对外提供的模块。
发布模块
如果希望自己开发的模块,分享给其他人,可以按照以下步骤进行操作
1. 制作发布压缩包步骤:
- 创建setup.py文件
from distutils.core import setup
setup(name="hm_message", # 包名
version="1.0", # 版本
description="itheima's 发送和接收消息模块", # 描述信息
long_description="完整的发送和接收消息模块", # 完整描述信息
author="itheima", # 作者
url="www.itheima.com", # 主页
py_module=["hm_message.send_messge",
"hm_message.receive_message"])
- 构建模块
python3 setup.py build
- 生成发布压缩包
python3 setup.py sdist
2. 安装模块
tar -zxvf hm_message-1.0.tar.gz
sudo python3 setup.py install
3. 卸载已经安装过的模块
直接从安装目录下,把安装模块的目录删除即可。可以使用模块.__file__查询模块所在目录。
cd 安装模块目录
rm -r 模块目录
pip安装第三方模块
- 第三方模块通常是指由知名的第三方团队开发的并且并程序员广泛使用的包/模块
- pip是一个现代的,通用的python包管理工具
- 提供了对python包的查找,下载,安装,卸载功能
安装和卸载功能如下:
# 将模块安装到Python2.x环境
sudo pip install pygame
sudo pip uninstall pygame
# 将模块安装到Python3.x环境
sudo pip3 install pygame
sudo pip3 uninstall pygame
mac下安装ipython
sudo pip insatall ipython