模块的概念
- 每一个以扩展名py结尾的Python源代码文件都是一个模块
- 模块名同样也是一个标识符,需要标识符的命名规则
- 在模块中定义的全局变量、函数、类都是提供给外界直接使用的工具
- 模块就好比工具包,要想使用这个工具包中的工具,就需要先导入这个模块
模块的两种导入方式
1)
import导入
import 模块名1,模块名2
提示:在导入模块时,每个导入应该独占一行
import 模块名1
import 模块名2
导入之后
通过 模块名. 使用模块提供的工具——全局变量、函数、类
使用as指定模块的别名
如果模块的名字太长,可以使用as指定模块的名称,以方便在代码中使用
import 模块名1 as 模块名
2)
from…import导入
- 如果希望从某一个模块中,导入部分工具,就可以 使用from…import的方式
- import模块名是一次性把模块中所有工具全部导入,并且通过模块名/别名访问
from 模块名1 import 工具名
导入之后
不需要通过 模块名.
可以直接使用模块提供的工具——全局变量、函数、类
注意:如果如果两个模块,存在同名的函数,那么后导入模块的模型,会覆盖掉先导入的函数
包
概念
- 包是一个包含多个模块的特殊目录
- 目录下有一个特殊的文件__init__.py
- 包名的命名方式和变量名一致,小写字母+_
作用 - 使用import包名,可以一次性导入包中所有的模块
案例演示
- 新建一个message的包
- 在目录下,新建两个文件send_message和receive_message
- 在send_message文件中定义一个send函数
- 在receive_message文件中定义一个receive函数
- 在外部直接导入hm_message的包
init.py
要在外界使用包中的模块,需要在__init__.py中指定对外界提供的模块列表
from.import send_message
from.import receive_message
send_message.py
def send(text):
print("正在发送:%s"%text)
receive_message.py
def receive():
return "这是来自1008X的短信"
__init__.py
from . import send_message
from . import receive_message
导入包.py
import message
message.send_message.send("hello")
txt=message.receive_message.receive()
print(txt)
#结果
正在发送:hello
这是来自1008X的短信