代码之家  ›  专栏  ›  技术社区  ›  guagay_wk

为什么有些python脚本以这种方式声明main()?[副本]

  •  0
  • guagay_wk  · 技术社区  · 9 年前

    在一些python脚本中,我看到了这种格式;

    def main():
        #run code
    
    if __name__ == "__main__":
        main()  
    

    在其他python脚本中 if __name__ == "__main__": 不存在,但代码正常运行。当代码可以正常运行时,为什么还要有额外的冗余行呢?使用的好处是什么 ?

    2 回复  |  直到 9 年前
        1
  •  3
  •   paul-g    9 年前

    这一行允许您在默认情况下仅在将脚本作为主脚本运行时运行某些功能(例如:。 python my_script.py ).

    如果您永远不会在其他代码或python shell中导入此脚本,则不需要这行代码。然而,将代码设计为模块化是很好的;进口友好;在更大的上下文中,即使看起来像是一次性脚本(例如,绘制一些数字、解析一些日志等)也可能有用。特别是在交互式shell会话中,例如使用 ipython 成本很小:将语句封装在函数中,并添加 ifmain .

        2
  •  1
  •   jadsq    9 年前

    这在制作模块时非常有用,或者通常在运行其他脚本时要导入scipt。 __name__ == "__main__" 仅当脚本为 主要的 执行的脚本,以便在导入语句中运行时避免运行后续代码。