Python中的执行流程

这个问题在这里已经有了答案:

  • 如果__name__ ==“__main__”:做什么? 23个答案

  • Python解释器对main()函数一无所知 - 流只是一行一行。

    该块:

    if __name__ =="__main__": main()
    

    是一个明确的函数调用,如果魔术变量__name__包含字符串"__main__" 。 那东西, __name__的内容是Python运行时运行模块的一件特别的事情:如果当前模块是被调用的主程序,它包含字符串__main__ ,否则它的内容就是模块名称。

    因此,如果您希望将main函数(可以具有任何名称)放在另一个文件中,则可以在调用时导入它:

    if __name__ =="__main__": 
         from other_module import main 
         main()
    

    此功能很有趣,因为它允许任何Python文件作为其他程序的可加载库模块工作,并提供独立功能作为程序。

    但是,对于Python包,即包含相关.py文件的文件夹,每个文件夹对应一个模块,Python必须选择顺序运行这些模块中的哪一个。 当您使用Python运行时的-m指令执行程序包时,它会在程序包中查找名为__main__.py的文件并执行该文件 - 如果没有这样的文件,程序包将无法直接运行。

    然而,尽管如此, __main__.py文件仅在执行包作为主程序时自动运行 - 如果包或部分包由另一个程序导入,则不会执行。 这与使用if表达式检查__name__的内容不同,实际上它是一种定义起始位置的内置行为。


    当您使用python script.py从命令行运行单个Python脚本时,解释将从第一行开始并逐行继续。 如果一行开始一个类或函数定义,则该定义将被存储以供日后参考。 如果该行是可执行代码,则直接执行。 在语句if __name__ == "__main__": main() ,这是直接可执行的,如果条件计算结果为true,则调用main() 。 但是,这并不特别。 你可以在if体内使用任何你想要的代码。

    链接地址: http://www.djcxy.com/p/9319.html

    上一篇: Flow of execution in Python

    下一篇: Python main function