【问题标题】:Why using "if __name__=='__main__': main()" and not simply "main()" in Python? [duplicate]为什么在 Python 中使用“if __name__=='__main__': main()”而不是简单的“main()”? [复制]
【发布时间】:2013-09-01 14:40:05
【问题描述】:

另外,我们为什么要使用下划线?毕竟我把main方法定义为main(),而不是__main__()

【问题讨论】:

  • 有人会给你一个详细的答案,但我对此的看法是“因为它是 Python,而不是 C”
  • __main__ 与您是否定义名为main() 的函数无关。

标签: python main


【解决方案1】:

Python 不知道像 C 或 Java 这样的“主”函数。 你在这里有更多的解释:what-does-if-name-main-do

【讨论】:

    【解决方案2】:

    当 python 解释器将模块(源文件)作为主程序运行时,它会将特殊的 __name__ 变量设置为具有值“__main__”,而不是 main()。

    【讨论】:

      【解决方案3】:

      当 Python 解释器读取一个源文件时,它会执行所有 在其中找到的代码。在执行代码之前,它会定义一些 特殊变量。例如,如果 python 解释器正在运行 该模块(源文件)作为主程序,它设置了特殊的 __name__ 变量具有值 "__main__"。如果这个文件是从另一个模块导入的,__name__ 将被设置为模块的 名字。

      对于您的脚本,我们假设它作为 主要功能,例如你说过类似

      python threading_example.py

      在命令行上。设置特殊变量后, 执行导入语句并加载这些模块。届时将 评估 def 块,创建一个函数对象并创建一个 名为 myfunction 的变量指向函数对象。它会 然后阅读 if 语句并看到 __name__ 确实等于 "__main__",所以它将执行那里显示的块。

      这样做的一个原因是有时你会编写一个模块 (一个 .py 文件)可以直接执行。或者,它可以 也可以在另一个模块中导入和使用。通过进行主要检查, 您可以仅在您想要运行模块时执行该代码 一个程序,当有人只想导入时不让它执行 你的模块并自己调用你的函数。

      取自这里:What does if __name__ == "__main__": do?

      【讨论】:

        猜你喜欢
        • 2017-05-19
        • 1970-01-01
        • 2010-12-29
        • 2011-02-27
        • 2018-11-22
        相关资源
        最近更新 更多