模块
1.通过模块名.
使用模块提供的工具----全局变量,类,函数
- import 模块名 as 模块别名(符合大驼峰命名法)
- from…import 导入
from 模块名1 import 工具名
例如 from 模块名1 import Dog
# 可以从模块中只导入一个工具
导入之后不需要通过模块名.的方式,可以直接使用模块提供的工具-----全局变量,函数,类
from 模块1 import 工具 as module2_工具
from 模块2 import 工具
# 通过import ...as...取别名的方式,可以在不同模块中导入两个同名的工具
模块的搜索顺序:
Python的解释器在导入模块时,会:
1.搜索当前目录指定模块名的文件,如果有就直接导入
2.如果没有,再搜索系统目录
在开发时,给文件起名,不要和系统的模块文件重名
Python中每一一个模块都有-个内置属性__file__可以 查看模块的完整路径
能够搜索到模块的路径
import numpy
print(numpy.__file__)
2.原则----每一个python文件都应该是可以被导入的
一个独立的python文件就是一个模块,直接执行的代码不是向外界提供的工具,模块被调用时,直接执行的代码不需要被执行
python在一个文件中导入一个模块时,会吧没有任何缩进的代码都会被执行一遍
开发人员通常会在模块下方增加一些测试代码,比如测试函数的运行是否正常,这些代码仅在模块内使用,被导入到其他文件中不需要执行
因此引入__name__属性
__name__是Python中的一个内置属性,记录着一个字符串
1.如果是被其他文件导入的,他就是模块名
2.如果是当前执行的程序, name__是__main
python文件中代码格式如下:
1.导入模块
2.定义全局变量
3.定义类
4.定义函数
在代码的最下方
def main():
pass
if __name__ == "__main__"
main()
包
包是一个包含多个模块的特殊目录
目录下有一个特殊的文件__init__.py
包命名方式和变量名一致,小写字母 + _
init.py
需要在外界使用包中的模块
需要在__init__.py中指定对外界提供的模块列表
# 从当前目录 导入模块列表
from.import send_message
from.import receive_message
p442-p445 发布制作的模块,需要再看