模块导入非常快,但不是即时的。这意味着:
- 将导入放在模块顶部很好,因为这是微不足道的成本,只需要支付一次即可。
- 将导入放在函数中将导致对该函数的调用花费更长时间。
因此,如果你关心效率,则将进口放在首位。仅在你的剖析显示有帮助的情况下,才将它们移入函数中(你进行了剖析以查看最能改善性能的地方,对吗?)
我见过执行延迟导入的最佳原因是:
- 可选的库支持。如果你的代码具有使用不同库的多个路径,则在未安装可选库的情况下不要中断。
- 在
__init__.py
插件的中,可能已导入但并未实际使用。例如Bazaar插件,它使用bzrlib的延迟加载框架。



