模块的概念
模块是python程序架构的一个核心概念
- 每一个以扩展名py结尾的python源代码文件都是一个模块
- 模块名同样也是一个标识符,需要符合标识符的命名规则
- 在模块中定义的全局变量、函数、类都是提供给外界直接使用的工具
- 模块就好比是工具包,要想使用这个工具包中的工具,就需要先导入这个模块
模块导入的两种方式
import导入
import 模块名1, 模块名2
注意:在导入模块时,每个导入应该独占一行
import 模块名1
import 模块名2
导入之后,通过模块名.使用模块提供的工具——全局变量、函数、类
测试模块1 测试模块2 导入模块 使用as指定模块的别名:如果模块的名字太长,可以使用as
指定模块的名称,以方便在代码中的使用语法:
import 模块名 as 模块别名
注意:模块别名应符合大驼峰命名法(忘记可以去看009节)
as指定模块别名from...import导入
- 如果希望从某一个模块中,导入部分工具,就可以使用
from...import
的方式 -
import 模块名
是一次性把模块中所有工具全部导入,并且通过模块名/别名访问
语法:
# 从模块导入某一个工具
from 模块名 import 工具名
导入之后,不需要通过模块名.,可以直接使用模块提供的工具——全局变量、函数、类
from...import导入模块 注意:如果两个模块,存在同名的函数,那么后导入模块的函数会覆盖掉先导入的函数- 开发时
import
代码应该统一写在代码的顶部,更容易及时发现冲突 - 一旦发现冲突,可以使用
as
关键字给其中一个工具起一个别名 别名防止覆盖
from...import *(了解)
语法:
# 从模块中导入所有工具
from 模块名 import *
注意:这种方式不推荐使用,因为函数重名并没有任何的提示,出现问题不好排查
导入全部模块的搜索顺序(了解)
python的解释器在导入模块时,会:
- 搜索当前目录指定模块名的文件,如果有就直接导入
- 如果没有,再搜索系统目录
注意:在开发时,给文件起名不要和系统的模块文件重名
python中每一个模块都有一个内置属性__file__
可以查看模块的完整路径 模块搜索顺序 注意:如果目录下,存在一个random.py
的文件,程序就无法正常执行了,这个时候python解释器会加载当前目录下的random.py
,而不会加载系统的random
模块
原则——每一个文件都应该是可以被导入的
- 一个独立的python文件就是一个模块
- 在导入文件时,文件中所有没有任何缩进的代码都会被执行一遍
实际开发场景
- 在实际开发中,每一个模块都是独立开发的,大多都有专人负责
- 开发人员通常会在模块下方增加一些测试代码,仅在模块内部使用,而被导入到其他文件中不需要执行
__ name__属性
-
__name__
属性可以做到测试模块的代码只在测试情况下被运行,而在被导入时不会执行 -
__name__
时python的一个内置属性,记录着一个字符串 - 如果是被其他文件导入的,
__name__
记录的就是模块名 - 如果是当前执行的程序
__name__
记录的就是__main__
__name__模块 __name__导入测试模块 在很多python文件中都会看到以下格式的代码:
# 导入模块
# 定义全局变量
# 定义类
# 定义函数
# 在代码最下方
def main():
pass
# 根据__name__判断是否执行以下代码
if __name__ == "__main__":
main()
2020.8.16
网友评论