Flow of execution in Python
我对Python完全陌生,因此对Python中的程序流有点困惑。如果我的理解正确,对于单个.py文件,如果我们添加行
1
| if __name__ =="__main__": main() |
解释器找到主函数并从那里开始执行。这是因为python的执行顺序是一行接一行的。
我的问题是,如果有多个EDOCX1×0个文件,1个这样的文件有主要的功能,比如爪哇/C++,Python解释器可以知道AD开始执行main函数吗?
- 如果你明确地把它写在纸上,那么就只能用英文评价EDOCX1。如果这很重要,它将是一个有趣的英文字母2。
python解释器对main()函数一无所知-流程只是一行一行地进行。
去的街区:
1
| if __name__ =="__main__": main() |
如果幻数变量__name__包含字符串"__main__",则显式调用函数。这一点,__name__的内容是Python运行时在运行模块时所做的一件特殊的事情:如果当前模块是被调用的主程序,它包含字符串__main__,否则它的内容是模块名。
因此,如果您希望将您的main函数(可以有任何名称)放在另一个文件中,您可以在调用时导入它:
1 2 3
| 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主体中拥有您想要的任何代码。