__name__ == "__main__"是什么?

原文: https://thepythonguru.com/what-is-if-name-main/


于 2020 年 1 月 7 日更新


Python 中的每个模块都有一个称为__name__的特殊属性。 当模块作为主程序运行时,__name__属性的值设置为'__main__'。 否则,将__name__的值设置为包含模块的名称。

考虑以下代码,以更好地理解。

  1. # file my_module.py
  2. foo = 100
  3. def hello():
  4. print("i am from my_module.py")
  5. if __name__ == "__main__":
  6. print("Executing as main program")
  7. print("Value of __name__ is: ", __name__)
  8. hello()

在这里,我们定义了一个新模块my_module。 通过输入以下代码,我们可以将该模块作为主程序执行:

  1. python my_module.py

预期输出

  1. Executing as main program
  2. Value of __name__ is: __main__
  3. i am from my_module.py
  1. # file my_module.py
  2. foo = 100
  3. def hello():
  4. print("i am from my_module.py")
  5. if __name__ == "__main__":
  6. print("Executing as main program")
  7. print("Value of __name__ is: ", __name__)
  8. hello()

在这里,我们正在创建一个新模块并将其作为主程序执行,因此__name__的值设置为'__main__'。 结果,如果条件满足,则函数hello()被调用。

现在创建一个名为module.py的新文件,并编写以下代码:

  1. import my_module
  2. print(my_module.foo)
  3. my_module.hello()
  4. print(my_module.__name__)

预期输出

  1. 100
  2. i am from my_module.py
  3. my_module

如您现在所见,由于__name__的值设置为'my_module',因此my_module中的if语句执行失败。