3. “__name__”与“__main__”
看到现在也许心中还是疑惑,那么现在我们来说一说“if __name__ == '__main__':”的原理。 “__name__”是Python的内置变量,用于指代当前模块。我们修改上面用到的A模块和B模块,在模块中分别输出模块的名称: 模块A: - # 模块A
- print('你好,我是模块A……')
- print('模块A中__name__的值:{}'.format(__name__))
- print('-------------------------')
复制代码 模块B:
- # 模块B
- from package01 import A
- print('你好,我是模块B……')
- print('模块B中__name__的值:{}'.format(__name__))
复制代码 执行A模块时,输出结果:
- 你好,我是模块A……
- 模块A中__name__的值:__main__
- -------------------------
复制代码 执行B模块时,输出结果:
- 你好,我是模块A……
- 模块A中__name__的值:package01.A
- -------------------------
- 你好,我是模块B……
- 模块B中__name__的值:__main__
复制代码发现神奇之处了吗?当哪个模块被直接执行时,该模块“__name__”的值就是“__main__”,当被导入另一模块时,“__name__”的值就是模块的真实名称。用一个类比来解释一下:记得小时候要轮流打扫教室,轮到自己的时候(模块被直接执行的时候),我们会说今天是“我”(__main__)值日,称呼其他人时,我们就会直接喊他们的名字。所以,“__main__”就相当于当事人,或者说第一人称的“我”。 所以,当运行“if __name__ == '__main__':”语句时,如果当前模块时被直接执行,__name__的值就是__main__,条件判断的结果为True,“if __name__ == '__main__':”下面的代码块就会被执行。
|