我知道这两个关于__init__.py
和__main__.py
的问题:
但我真的不明白他们之间的区别.或者我可以说我不明白他们是如何相互作用的.
我知道这两个关于__init__.py
和__main__.py
的问题:
但我真的不明白他们之间的区别.或者我可以说我不明白他们是如何相互作用的.
当你把一个包放入一个正在运行的python程序中时,__init__.py就会运行.例如,程序中的import idlelib
运行idlelib/__init__.py
,它不做任何事情,因为它的唯一目的是将idlelib目录标记为包.另一方面,tkinter/__init__.py
包含大部分tkinter代码,并定义了所有小部件类.
当您将一个包作为主程序时,__main__.py将作为"_main__"运行.例如,命令行中的python -m idlelib
运行idlelib/__main__.py
,这会导致空闲.这一行有tkinter/__main__.py
,同样有tkinter/__main__.py
:
from . import _test as main
在这个上下文中,.
是tkinter
,所以导入.
导入tkinter
,它运行tkinter/__init__.py
._test
是在该文件中定义的函数.因此,调用main()
(下一行)与在命令行中运行python -m tkinter.__init__
具有相同的效果.