Python中的执行流程

Zeu*_*eus 3 python

我是Python的新手,因此对Python中程序的流程感到有点困惑.如果我的理解是正确的,对于单个.py文件,如果我们添加该行

if __name__ =="__main__": main()
Run Code Online (Sandbox Code Playgroud)

解释器找到主函数并从那里开始执行.这,因为Python执行顺序排列.

我的问题是,如果有多个.py文件和1个这样的文件有主要功能,像Java/C++那样python解释器有没有办法知道广告开始执行主要功能?

jsb*_*eno 5

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

块走了:

if __name__ =="__main__": main()
Run Code Online (Sandbox Code Playgroud)

如果magic变量__name__包含字符串,则是对函数的显式调用"__main__".那个东西,__name__是运行模块时Python运行时所做的一件特别的事情:如果当前模块是被调用的主程序,它包含字符串__main__,否则它的内容就是模块名.

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

if __name__ =="__main__": 
     from other_module import main 
     main()
Run Code Online (Sandbox Code Playgroud)

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

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

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