一、模块

  • 模块是python程序框架的一个核心概念

**

  • 每一个以拓展名py 结尾的python源代码文件都是一个模块

**

  • 模块名同样也是一个标识符,需要符合标识符的命名规则


  • 在模块中定义的全局变量,函数,类都是提供给外界直接使用的工具

**

  • 模块就好比是工具包,要想使用这个工具包中的工具,就要先导入这个模块


1、模块的两种的导入方式


1.1 import 导入

import 模块名1,模块名2

提示: 在导入模块时,每个导入应该独占一行_

1.1.1 导入之后

通过**模块名. **使用模块提供的工具 — 全局变量,函数,类

1.1.2 使用as 指定模块别名

如果模块的名字太长,可以使用 as 指定模块的名称,以方便在代码中使用

  1. import 模块名 as 模块别名

注意: 模块别名应该符合 大驼峰命名法 【java类定义的语法】

1.2 from .. import 导入

  • 如果希望从一个模块中,导入部分工具,就可以使用 from .. import 的方式
  • import 模块名 时一次性把 模块中所有工具全部导入 ,并且通过 模块名/别名访问
  • from 模块名1 import 工具名
    • from yxx_06_继承 import Animal

1.2.1 导入之后

不需要通过 **模块名. **

可以直接使用模块提供的工具 — 全局变量,函数,类

1.2.2 注意:

  1. 如果两个模块,存在同名的函数,那么后导入模块的函数会覆盖先导入的函数

**

  1. 开发时import 代码应该统一写在 代码的顶部, 更容易及时发现冲突


  1. 一旦发现冲突,可以使用as关键字 给其中 一个工具起一个别名

from 模块名 import * (了解即可) 不推荐使用

2、原则 — 每一个文件应该时可以被导入的

  • 一个独立的 python 文件就是一个模块

**

  • 在导入 文件时,文件中所有没有任何缩进的代码都会被执行一遍


每一个模块都有一个 file_属性,能查看该模块的文件路径_

3、name 属性

_name 属性可以做到,测试模块的代码> 只在测试情况下被运行> ,而在> 被导入时不会执行!

  • name 是 python 的一个内置属性,记录着一个字符串

**

  • 如果是被其他文件导入的name 就是模块名

**

  • 如果是当前执行的程序 namemain


  • 使用 name 来执行python程序
  1. if __name__ == "__main__":
  2. print("测试代码..")
  3. print("测试代码..")
  4. print("测试代码..")
  • 总结: 建议在写代码的 时候 不要直接顶格写 测试代码,而是写个if 判断一个 name 的属性是不是main 然后在 if里面写 测试代码


  • 在很多python 文件中都会看到以下格式 的代码 【以后都要按照这个格式写代码】
  1. # 导入模块
  2. # 定义全局变量
  3. # 定义类
  4. # 定义函数
  5. # 在代码的最下方
  6. def main():
  7. # ...
  8. pass
  9. #根据判断 __name__ 属性是否执行下方代码
  10. if __name__ == "__main__":
  11. main()

二、包

1、概念

  • 包是一个包含多个模块特殊目录

**

  • 目录下【包下】 有一个特殊的文件 init.py


  • 报名的命名方式和变量名 一致, 小写字母 + _

**

2、好处

使用 import 包名 可以一次性 导入包中的 所有模块

3、创建包

python package

4、init.py文件

要在外界使用包中的模块,需要在 init.py 中指定 对外界提供的模块列表

  1. # 在__init__.py 中写 从当前目录 导入模块列表
  2. from . import send_message
  3. from . import receive_message

5、别的类中使用 import 包名

  1. # 在别的类中 直接导入包名就可以把 __init__.py中的文件导进来
  2. import yxx_message
  3. # 通过包名 . py文件名 . 函数名/类名/变量 来使用即可
  4. yxx_message.send_message.send()
  5. yxx_message.receive_message.receive()