- 模块是python程序架构中的一个核心概念。每个以扩展名.py结尾的python源代码文件都是一个模块,使用模块前需要导入,即import这个模块。
- 模块名也是一个标识符
- 可以由数字,下划线,字母组成,单不能以数字开头,不能和关键字重名,以数字开头的文件名是没有办法导入这个模块。
1 .模块的两种导入方法
import 模块1,模块2
import 模块1
import 模块2
2. import导入时起别名
有时我们的模块名很长并不方便调用,这时我们就可以通过as来给模块起别名。
import 模块1 as 别名
注:import是一次性全部导入所有工具,需要通过模块名/别名访问使用。
3. from...import导入
通过from... import导入的模块,可直接使用。
3.1 from ...import局部导入
有时我们只需要某个模块的一些工具(全局变量,函数,类),这时我们就可以使用from...import导入
from 模块名 import 工具名
#从某个模块导入所需工具
3.2 from...import导入同名工具
python导入两个模块中,存在相同名的函数,此时后导入的会覆盖先导入的函数。此时可以通过as来给其中一个来取别名
from zj_input import itin
from zj_output import itin
#取别名
from zj_input import itin as modify itin
如上述zj_input ,zj_output两模块中都有相同函数名的函数itin(),此时通过as给第一个模块的itin取别名,就能避免覆盖的问题。
3.3 from...import导入所有工具(不推荐)
from 模块 import 工具名*
注:from...import导入所有工具这种方法并不推荐,因为当出现函数重名的时候不好排查错误。
4._name_属性
_name_属性兼顾测试和导入两种模式,测试模块的代码只有在测试情况下执行,而在导入的时候不会被执行。当在自身模块执行时_name_就是_main_,而在模块被导入时_name_就是模块名。
在很多python文件中都会有以下格式的代码:
#导入模块
#定义全局变量
#定义类
#定义函数
#在代码最下方
def main():
#根据_name_判断是否执行下方代码
if _name_ == "_main_":
main()
这样就保证了一个编写原则——每一个文件都应该是可以被导入的。