Python-导入语句是否应该始终位于模块的顶部?
导入总是放在文件的顶部,紧随任何模块注释和文档字符串之后,以及模块全局变量和常量之前。
但是,如果我要导入的类/方法/函数仅在极少数情况下使用,那么确定在需要时进行导入肯定会更有效吗?
这不是吗?
class SomeClass(object): def not_often_called(self)
from datetime import datetime
self.datetime = datetime.now()
比这更有效?
from datetime import datetimeclass SomeClass(object):
def not_often_called(self)
self.datetime = datetime.now()
回答:
模块导入非常快,但不是即时的。这意味着:
- 将导入放在模块顶部很好,因为这是微不足道的成本,只需要支付一次即可。
- 将导入放在函数中将导致对该函数的调用花费更长时间。
因此,如果你关心效率,则将进口放在首位。仅在你的剖析显示有帮助的情况下,才将它们移入函数中(你进行了剖析以查看最能改善性能的地方,对吗?)
我见过执行延迟导入的最佳原因是:
- 可选的库支持。如果你的代码具有使用不同库的多个路径,则在未安装可选库的情况下不要中断。
- 在
__init__.py
插件的中,可能已导入但并未实际使用。例如Bazaar插件,它使用bzrlib的延迟加载框架。
以上是 Python-导入语句是否应该始终位于模块的顶部? 的全部内容, 来源链接: utcz.com/qa/414779.html