【发布时间】:2013-09-01 14:40:05
【问题描述】:
另外,我们为什么要使用下划线?毕竟我把main方法定义为main(),而不是__main__()。
【问题讨论】:
-
有人会给你一个详细的答案,但我对此的看法是“因为它是 Python,而不是 C”
-
__main__与您是否定义名为main()的函数无关。
另外,我们为什么要使用下划线?毕竟我把main方法定义为main(),而不是__main__()。
【问题讨论】:
__main__ 与您是否定义名为main() 的函数无关。
Python 不知道像 C 或 Java 这样的“主”函数。 你在这里有更多的解释:what-does-if-name-main-do
【讨论】:
当 python 解释器将模块(源文件)作为主程序运行时,它会将特殊的 __name__ 变量设置为具有值“__main__”,而不是 main()。
【讨论】:
当 Python 解释器读取一个源文件时,它会执行所有 在其中找到的代码。在执行代码之前,它会定义一些 特殊变量。例如,如果 python 解释器正在运行 该模块(源文件)作为主程序,它设置了特殊的
__name__变量具有值"__main__"。如果这个文件是从另一个模块导入的,__name__将被设置为模块的 名字。对于您的脚本,我们假设它作为 主要功能,例如你说过类似
python threading_example.py在命令行上。设置特殊变量后, 执行导入语句并加载这些模块。届时将 评估 def 块,创建一个函数对象并创建一个 名为 myfunction 的变量指向函数对象。它会 然后阅读 if 语句并看到
__name__确实等于"__main__",所以它将执行那里显示的块。这样做的一个原因是有时你会编写一个模块 (一个 .py 文件)可以直接执行。或者,它可以 也可以在另一个模块中导入和使用。通过进行主要检查, 您可以仅在您想要运行模块时执行该代码 一个程序,当有人只想导入时不让它执行 你的模块并自己调用你的函数。
【讨论】: