概要:1.调用标准包内模块时,先运行__init__.py内可执行代码(无论下面有没有使用这个模块,一旦引入必先运行)
2.当调用这个模块时内函数时按调用顺序运行(不再运行__init__.py内代码),如test是个模块,里面有t1这个函数
如标准调用: test.t1() 先运行test里代码,再运行t1里代码
3.如用from test import t1 运行t1()时 只运行t1的代码
4.对于快捷包,同包下的模块直接引入该模块名,会有隐患,如果其他包内调用该模块,会有ModuleNotFoundError错误
解释器找不到该模块,引入时需要加包名.模块名(而标准包不会有这个问题)
前置知识:
概念理解:模块就好比是工具包,要想使用这个工具包中的工具(就好比函数),就需要导入这个模块
标准包: 有__init__.py文件的文件夹和其他模块
快捷包:含有模块的文件夹,无__init__.py文件
引用其他模块的包:绝对引用,相对引用(需用到:点(.)取文件夹下级文件)
调用无论from ....import 还是 import 只要出现包名,必会先运行包内内置模块(__init__.py)再运行后面代码
快捷包同包下的模块也可以用
import 模块名 但其他包调用它时,只要他使用了这个模块名就会报错,解释器找不到它调用的模块
#要写 全包名.模块名 才不报错
总结:
调用标准包内模块,只要出现包名(用from也会),先运行它的内置模块(__init__.py)!!,同时还加载了它的函数,可以在后续调用
只要有模块内可执行代码,再引入这个模块,引入时会先运行!!
故使用模块,可打包成类或函数,来进行使用,避免使用混乱