我多次注意到 import mod 语句可以在调用 mod.something()之前紧密放置。虽然我注意到通常开发人员将import语句放在源文件的开头。这有充分的理由吗?
我经常只使用某些模块中的一些功能。在函数调用之前紧紧放置import语句似乎更漂亮。
e.g。
# middle of the source file
import mod
mod.something()
你会推荐什么?为什么?
答案 0 :(得分:6)
在调用函数/使用该模块中的类之前导入模块的一个原因是性能:有时模块的初始化可能很昂贵,因为,例如,它涉及加载和初始化本机库。如果不总是调用模块中的代码,那么将该模块的导入推迟到最后一刻是个好主意。
答案 1 :(得分:5)
也可以在这里作为答案移动我的评论,虽然感觉有点多余。
PEP样式指南要求所有导入都在模块的开头进行。这使人们更容易知道您的模块具有哪些依赖关系,而不必深入挖掘整个源文档。
作为警告 - 在极少数情况下导入会导致错误(循环导入是最好的示例),您可以在使用某些功能之前立即导入。但总的来说,这是一种糟糕的形式。如果您需要导入模块顶部以外的其他位置,则通常表明存在设计缺陷。