init.py 一般有三种作用,除了标记 module 外,还能:
① 留空
② 在 init.py 中引入所有的模块。import all modules
③ 在 init.py 中引入 key function 到 package namespace。好处在于当你重构了整个代码之后仍然有办法使得 API 保持稳定。(在 reddit 里的一个讨论帖里所提到的)
实际上我最喜欢的是第②和第③种,可以简化引入的模块。
所以从这点来看的话,在 init.py 里:
① 不用 import *,只要第一行就够了
② 用 from .server import WebApp 来替代 from server import WebApp。前者是 explicit relative import,后者是 implicit relative import。虽然在同一个 module 里两种都是没有问题的,但 Pythonic~
init.py 一般有三种作用,除了标记 module 外,还能: ① 留空 ② 在 init.py 中引入所有的模块。import all modules ③ 在 init.py 中引入 key function 到 package namespace。好处在于当你重构了整个代码之后仍然有办法使得 API 保持稳定。(在 reddit 里的一个讨论帖里所提到的)
实际上我最喜欢的是第②和第③种,可以简化引入的模块。
所以从这点来看的话,在 init.py 里: ① 不用 import *,只要第一行就够了 ② 用 from .server import WebApp 来替代 from server import WebApp。前者是 explicit relative import,后者是 implicit relative import。虽然在同一个 module 里两种都是没有问题的,但 Pythonic~