多个模块的Python程序的切入点是什么?

时间:2018-06-06 07:45:10

标签: python sequence execution

我想了解Python程序从哪一点开始运行。我之前有过Java的经历。在Java中,每个程序都从main()类的Main函数开始。知道了这一点,我就可以确定其他类的其他类或函数的执行顺序。我知道在Python中我可以使用__name__来控制程序执行顺序:

def main():
    print("This is the main routine.")

if __name__ == "__main__":
    main()

但是当我们不使用__name__时,我的Python程序的起始行是什么?

1 个答案:

答案 0 :(得分:1)

  

解释器从头开始逐行解释文件。   如果遇到函数定义,则会将其添加到全局变量中   字典如果遇到函数调用,则会在全局变量中进行搜索   命令并执行或失败。

# foo.py
def foo():
    print "hello"
foo()

def test()
    print "test"

print "global_string"

if __name__ == "__main__":
    print "executed"
else:
    print "imported"

输出

hello
global_string
executed
  • 解释器开始从一开始就逐行解释foo.py,就像首先将其添加到globals dict的函数定义一样,然后遇到对函数foo()的调用并执行该函数,因此它将输出{{1} }。
  • 之后,它将hello添加到全局字典中,但是没有对该函数的函数调用,因此它将不执行该函数。
  • 在执行该打印语句后,将打印test()
  • 此后,如果条件将执行,并且在这种情况下,条件将匹配并打印global_string