一、模块
- 模块是python程序框架的一个核心概念
**
- 每一个以拓展名py 结尾的python源代码文件都是一个模块
**
- 模块名同样也是一个标识符,需要符合标识符的命名规则
- 在模块中定义的全局变量,函数,类都是提供给外界直接使用的工具
**
- 模块就好比是工具包,要想使用这个工具包中的工具,就要先导入这个模块
1、模块的两种的导入方式
1.1 import
导入
import 模块名1,模块名2
提示: 在导入模块时,每个导入应该独占一行_
1.1.1 导入之后
通过**模块名. **
使用模块提供的工具 — 全局变量,函数,类
1.1.2 使用as 指定模块别名
如果模块的名字太长,可以使用 as 指定模块的名称,以方便在代码中使用
import 模块名 as 模块别名
注意: 模块别名应该符合 大驼峰命名法 【java类定义的语法】
1.2 from .. import
导入
- 如果希望从一个模块中,导入部分工具,就可以使用 from .. import 的方式
- import 模块名 时一次性把 模块中所有工具全部导入 ,并且通过 模块名/别名访问
- from 模块名1 import 工具名
from yxx_06_继承 import Animal
1.2.1 导入之后
不需要通过 **模块名. **
可以直接使用模块提供的工具 — 全局变量,函数,类
1.2.2 注意:
- 如果两个模块,存在同名的函数,那么后导入模块的函数,会覆盖先导入的函数
**
- 开发时import 代码应该统一写在 代码的顶部, 更容易及时发现冲突
- 一旦发现冲突,可以使用as关键字 给其中 一个工具起一个别名
from 模块名 import * (了解即可) 不推荐使用
2、原则 — 每一个文件应该时可以被导入的
- 一个独立的 python 文件就是一个模块
**
- 在导入 文件时,文件中所有没有任何缩进的代码都会被执行一遍
每一个模块都有一个 file_属性,能查看该模块的文件路径_
3、name 属性
_name 属性可以做到,测试模块的代码> 只在测试情况下被运行> ,而在> 被导入时不会执行!
- name 是 python 的一个内置属性,记录着一个字符串
**
- 如果是被其他文件导入的,name 就是模块名
**
- 如果是当前执行的程序 name 是 main
- 使用 name 来执行python程序
if __name__ == "__main__":
print("测试代码..")
print("测试代码..")
print("测试代码..")
- 总结: 建议在写代码的 时候 不要直接顶格写 测试代码,而是写个if 判断一个 name 的属性是不是main 然后在 if里面写 测试代码
- 在很多python 文件中都会看到以下格式 的代码 【以后都要按照这个格式写代码】
# 导入模块
# 定义全局变量
# 定义类
# 定义函数
# 在代码的最下方
def main():
# ...
pass
#根据判断 __name__ 属性是否执行下方代码
if __name__ == "__main__":
main()
二、包
1、概念
- 包是一个包含多个模块 的 特殊目录
**
- 目录下【包下】 有一个特殊的文件 init.py
- 报名的命名方式和变量名 一致, 小写字母 + _
2、好处
3、创建包
4、init.py文件
要在外界使用包中的模块,需要在 init.py 中指定 对外界提供的模块列表
# 在__init__.py 中写 从当前目录 导入模块列表
from . import send_message
from . import receive_message
5、别的类中使用 import 包名
# 在别的类中 直接导入包名就可以把 __init__.py中的文件导进来
import yxx_message
# 通过包名 . py文件名 . 函数名/类名/变量 来使用即可
yxx_message.send_message.send()
yxx_message.receive_message.receive()