Python:优化导入

tet*_*s11 8 python import

在代码中加载模块的位置是否重要?或者它们都应该在顶部声明,因为在加载时,外部模块必须加载,无论它们在代码中声明的位置......?

例:

from os import popen

try:
    popen('echo hi')
    doSomethingIllegal;
except:
    import logging                   #Module called only when needed?
    logging.exception("Record to logger)
Run Code Online (Sandbox Code Playgroud)

或者这是由编译器以与以下相同的方式进行优化:

from os import popen
import logging                      #Module will always loaded regardless

try:
    popen('echo hi')
    doSomethingIllegal;
except:
    logging.exception("Record to logger)
Run Code Online (Sandbox Code Playgroud)

Lev*_*von 10

表明它可能会有所不同:

"import语句几乎可以在任何地方执行.将它们置于函数内以限制其可见性和/或缩短初始启动时间通常很有用.虽然Python的解释器经过优化,不能多次导入同一模块,但重复执行import语句可以在某些情况下严重影响表现."

这两个操作系统问题,本地导入声明?始终导入模块顶部?详细讨论这个问题.

最后,如果您对自己的具体案例感到好奇,可以在您的环境中对两种备选方案进行概述/基准测试.

我更喜欢将所有的import语句放在源文件的顶部,遵循样式约定并保持一致性(此外,它还可以使更改更容易,无需通过源文件查找遍布分散的import语句)