模块是什么
一个.py
文件,就是一个模块
。
模块名是什么
一个.py
文件的名字,就是模块名
。
__name__
是什么
__name__
是模块
的内置变量
。
它是一个变量,就是说,它是会变化的。
它怎么变化呢,取决于,这个模块的导入方式。
模块的导入方式有几种?
有10种
,具体可以参考这篇文章。
- 1、直接运行模块,那么模块就是主程序
- 2、
常规导入
,也叫绝对导入
。 - 3、
包内导入
,也叫相对导入
。 - 4、
动态导入
,也叫运行时导入
。 - 5、作为
命名空间包的一部分
导入。 - 6、从
__main__
模块导入(特殊场景) - 7、使用
-m
参数执行模块 - 8、通过
sys.path
临时添加路径导入 - 9、嵌套导入,模块内部再导入其他模块
- 10、循环导入(应该避免)
__name__
的取值
我们呢,总结一下,模块不管是怎么导入,不管上面10种情况怎么变化,始终是有两种状态。
- 被执行:
__name__
的取值就是__main__
- 被导入:
__name__
的取值就是模块完整路径。
所以,
__name__
可以看作是模块完整路径。
__name__
是模块内置变量,它的取值是变化的,是根据模块的使用状态
变化的。
模块的使用状态
只有两种,一种叫做被执行
,一种叫做被导入
。如果模块是
被执行
的,那么__name__
的取值就是__main__
。如果模块是被导入的,那么
__name__
的取值就是模块完整路径
。