__ init__.py 的作用及其用法: 包下的__init__.py 所在目录是一个模块包,本身也是一个模块,可用于定义模糊导入时要导入的内容。当我们导入一个包的时候,包下的__init__.py中的代码会自动执行,因此在某些大的项目被使用频率较高的模块,我们也可以用于批量导入模块。
首先创建一个名为 package5的包,这个包的__init__.py 也自动生成,再创建 init_test.py。 创建子包 package_init, 同样这个包的__init__.py 也自动生成,最后创建 init_demo1.py 和 init_demo2.py
分别给 init_demo1.py 和 init_demo2.py 随意加一个str
当在 init_test.py 中 执行模糊导入 from package5.package_init import * 后,打印 init_demo1 的 str1 和 init_demo2 的 str2 变量时,都会出现报错
可以在 package_init 包下的__init__.py 添加 __ all__ = [‘init_demo1’,‘init_demo2’],
__ all__ 的作用稍后下面会继续说明
再次执行 init_test.py, 能正常打印出 2个变量值
当导入包时,自动执行 __init __.py 里面的代码
批量导入模块, 假设有3个常用的模块,可以添加到 __ init __.py
导入 package_init,相当于已经自动导入以上3个模块
__all__的作用及其用法 :上面已经演示了在包下的 __init __.py, 可用于标识模糊导入时的模块。
在普通模块中使用时,表示一个模块中允许哪些属性可以被导入到别的模块中,在 all_demo1.py 中添加3个变量,以及 标明 __ all__ = [‘str1’,‘str2’], 表示只允许 str1,str2 变量被导入
可见,当模糊导入模块时, str3 变量值是不能被打印出来的
如果需要打印出 str3 变量,需要导入模块时指明
__name__的作用及其用法: __name__这个系统变量显示了当前模块执行过程中的名称,如果当前程序运行在这个模块中, __ name __ 的名称就是__main __ 如果不是,则为这个模块的名称。__main__一般作为函数的入口, 也称主程序入口
当 all_demo1.py 作为模块被导入时,结果为该模块名