python模块的首次导入会发生三件事:
1.执行所导入模块的文件
2.产生所导入模块文件的名称空间,将该文件运行过程中产生的名字都丢到当前文件的命名空间中
3.在当前文件中产生的名字“被导入模块名”,该名字指向该文件产生的命名空间
之后再导入该模块,直接引用首次导入产生的结果,不会产生新的命名空间
python文件的两种用途:
1.当做程序被运行
2.当做模块被导入
当"__name__" == "__main__"时,当前文件为普通python文件,当"__name__" == 文件名时,当前文件被当做模块被调用
模块通过from 模块名 import * 导入之后调用模块的变量时,*是根据__all__这个列表去查找的,如果这个列表内没有定义的变量是无法被调用的
模块调用的顺序:
一般首次调用非内置的模块时,是先从文件中读取模块然后加载到内存中,除非程序结束,否则一直存在于内存中,如果,在程序没结束前再次调用,则直接从内存中取该模块
查看加载到内存的模块,print(sys.modules)
导入非同目录的模块时,可以先把目标模块的绝对路径加入sys.path里面。然后再导入