代码之家  ›  专栏  ›  技术社区  ›  Taohidul Islam

多模块python程序的入口点是什么?

  •  1
  • Taohidul Islam  · 技术社区  · 7 年前

    我想知道python程序从哪一点开始运行。我以前在 Java . 在 爪哇 每个程序都从 main() 它的功能 Main 班级。知道了这一点,我就可以确定其他类或其他类的函数的执行顺序。我知道在python中,我可以通过使用 __name__ 这样地:

    def main():
        print("This is the main routine.")
    
    if __name__ == "__main__":
        main()
    

    但是当我们不使用 第二代 那么我的python程序的起始行是什么?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Anand Tripathi    7 年前

    解释器开始逐行解释文件。 如果遇到函数定义,则将其添加到 全局变量 如果遇到函数调用,它会在 全局变量 听写并执行或失败。

    # 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() 执行它以便打印 hello .
    • 之后,它又补充道 test() 到全局dict,但是没有对该函数的函数调用,因此它不会执行该函数。
    • 之后,将执行print语句 global_string .
    • 之后,如果条件将执行,在这种情况下,它将匹配并打印 executed .