原文: 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语句执行失败。