__init__.py和__main__.py有什么区别?

时间:2015-07-09 20:38:57

标签: python python-3.x

我知道有关文件__init__.py__main__.py的两个问题。

What is __init__.py for?

What is __main__.py?

但我真的不明白它们之间的区别。

2 个答案:

答案 0 :(得分:30)

包导入正在运行的python程序时,

__ init __。py 运行。例如,程序中的import idlelib运行idlelib/__init__.py,它不执行任何操作,因为它的唯一目的是将idlelib目录标记为包。另一方面,tkinter/__init__.py包含大部分tkinter代码并定义了所有小部件类。

__ main __。py 以' __ main __'运行当你运行一个包作为主程序时。例如,命令行中的python -m idlelib运行idlelib/__main__.py,它将启动Idle。同样,python -m tkinter运行tkinter/__main__.py,其中包含以下行:

from . import _test as main

在此上下文中,.tkinter,因此导入.导入tkinter,其运行tkinter/__init__.py_test是该文件中定义的函数。因此,调用main()(下一行)与在命令行运行python -m tkinter.__init__具有相同的效果。

答案 1 :(得分:1)

除了别的以外,

__init__.py将目录标记为python目录,并允许您在包的范围内设置变量。

如果您尝试运行压缩的python文件组,则会运行

__main__.py__main__.py允许您执行包。

这两个答案都是从您链接的答案中获得的。还有其他一些你对这些事情没有理解的东西吗?