于 2020 年 1 月 7 日更新
Python 中的每个模块都有一个称为__name__的特殊属性。 当模块作为主程序运行时,__name__属性的值设置为'__main__'。 否则,将__name__的值设置为包含模块的名称。
考虑以下代码,以更好地理解。
# file my_module.pyfoo = 100def hello():print("i am from my_module.py")if __name__ == "__main__":print("Executing as main program")print("Value of __name__ is: ", __name__)hello()
在这里,我们定义了一个新模块my_module。 通过输入以下代码,我们可以将该模块作为主程序执行:
python my_module.py
预期输出:
Executing as main programValue of __name__ is: __main__i am from my_module.py
# file my_module.pyfoo = 100def hello():print("i am from my_module.py")if __name__ == "__main__":print("Executing as main program")print("Value of __name__ is: ", __name__)hello()
在这里,我们正在创建一个新模块并将其作为主程序执行,因此__name__的值设置为'__main__'。 结果,如果条件满足,则函数hello()被调用。
现在创建一个名为module.py的新文件,并编写以下代码:
import my_moduleprint(my_module.foo)my_module.hello()print(my_module.__name__)
预期输出:
100i am from my_module.pymy_module
如您现在所见,由于__name__的值设置为'my_module',因此my_module中的if语句执行失败。
