模块
1.模块是Python程序架构的一个核心概念
在导入模块时,每个导入应该独占一行
import 模块1
import 模块12
在导入模块后,我们通过 模块名. 的方式,使用模块提供的工具
2.使用as指定模块的别名
如果模块的名字太长,可以使用as指定模块的名称,以方便在代码中使用
语法: import 模块名1 as 模块名
3.from .... import 导入
如果希望从一个模块中,导入部分工具,就可以利用from...import的方式
import模块名是一次性把模块中所有工具全部导入,并同过模块名/别名访问
从模块导入 某一个工具
from 模块名 import 工具名
导入之后,不需要通过模块名 . 的方式访问,可以直接使用模块提供的工具
注:
如果导入的俩个模块,存在同名的函数,那么后导入的模块函数,会覆盖先导入的函数
4.from .... import *
从模块中导入所有工具,不在使用模块名.的方式访问,直接使用工具
5.模块的搜索顺序
Python 的解释器在导入模块时,会:
1.搜索当前目录指定模块名的文件,如果有就直接导入,如果没有,在搜索系统目录
注:在开发时,给文件起名时,尽量不要 和系统的模块文件重名
提供的工具可以是:全局变量、函数、类、注意,直接执行的代码不是向外界提供的工具
#文件导入时,能够直接执行的代码不需要被执行
注:在导入文件时,文件中所有没有任何锁紧的代码都会被执行一遍
6.__name__属性
__name__属性可以做到,测试模块的代码 只在测试情况下被运行,而在被导入时不会被执行
__name__是Python的一个内置属性,记录着一个字符串
如果是被其他文件导入的,__name__就是模块名
如果是当前执行的程序__name__是字符串__main__
包
包是一个包含多个模块的特殊目录
目录下面有一个特殊的文件__init_.py
包名的命名方式和变量名一致,小写字母±
可以 使用 import 包名 可以一次性导入包中所有的模块
案例演练:
1.新建一个 message的包
2.在目录下,新建俩个文件send_message和receive_message
3.在send_message文件中定义一个send函数
4.在receive_message 文件中定义一个receive函数
5.在外部直接导入 message包
发布模块
制作发布压缩包步骤
1.创建setup.py
from distutils.core import setup
setup(name="message",#包名
version="1.0",
description="itheima's 发送和接受信息模块" #描述信息
long_description="完整的发送和接受消息模块",#完整描述信息
author="itheima", #作者邮箱
author_email="itheima.com", #主页
url="www.itheima.com", #主页
py_modules=["message.send_message","message.receive_message"]
用Python解释器执行这个 setup.py文件
2.构建模块
$ python3 setup.py build
3.生成发布压缩包
$ python3 setup.py sdist
安装模块
1.将压缩包解压缩
tar -zxvf message-1.0.tar.gz
2.以root身份执行下面代码
sudo python3 setup.py install
卸载模块
模块/包.file #可以查看模块或包的完整路径
1.cd 路径
2.sudo rm -r 包名*
pip 安装第三方模块
第三方模块通常是指由知名的第三方团队开发并且被程序员广泛使用的Python 包/模块
例如:pygame 就是一套非常成熟的游戏开发模块
pip是一个现代的,通用的Python包管理工具
提供了对Python包的查找、下载、安装、卸载等功能
安装和卸载命令如下:
#将模块安装到Python2.x环境
sudo pip install pygame
sudo pip uninstall pygame
#将模块安装到Python3.x环境
sudo pip3 install pygame
sudo pip3 uninstall pygame
在Linux下安装
sudo apt install ipython
sudo apt install ipython3
eval函数
eval()函数十分强大
将字符串当成有效的表达式来求值并返回计算结果
案例:
str_num=input(“请输入一个表达式”)
print(eval(str_num))
eval()注意事项
在开发时千万不要使用eval直接转换input结果