通过 import 文件名来使用该文件中的内容
通常,1个文件就是1个模块,文件名就是模块名(建议全小写)
-
Import 模块 as 别名
-
Import 后面可以跟上多个模块名
import 模块1, 模块2, ...建议 import 后面只导入1个模块
- from 模块 import 名称 as 别名
- from 模块 import 名称1, 名称2, ....
- from 模块 import *
如果从不同模块导入了相同的名称,那么后导入的会覆盖掉前导入的
- 可以通过
__all__ = [名称1,名称2, ...]控制 import * 的内容
- 有且只有1个模块作为程序入口被直接运行,我们称为主模块(main module)
- 剩下的其他模块,只能作为辅助模块,被主模块直接或间接导入
- 模块中的代码只会被执行1次
- 模块只会被初始化1次
- 比如A导入B,B导入A
__file__:模块的完整文件路径__name__:- 当直接执行该模块时,值为:
__main__ - 当被其他模块导入时:值为:模块名
- 当直接执行该模块时,值为:
用于:在自定义模块文件中,编写测试代码,当该模块被其他模块引用时,如果没有测试代码不在if __name__ == '__main__':中,那么被引入时会被自动执行,但是当放置到if __name__ == '__main__':中则只会在当前模块中执行时才会运行
if __name__ == '__main__':
test1(20, 10)用于在自定义模块中,被__all__指定的函数名,在其他模块中通过import *导入该模块时,只会导入在__all__列表中指定的函数,未指定的则无法使用
# my_module1.py 文件
def test1(a, b):
print(a + b)
def test2(a, b):
print(a * b)
__all__ = ["test1", "test2"]不同模块都通过 import XX方式导入相同的xx名称,那么最后通过import XX 导入的部分会覆盖掉之前导入的部分
from my_module1 import test1
from my_module2 import test1
test1(10, 20) # test1实际执行的是来自my_module2中的test1函数实现