Python中未使用的导入是否会影响性能?

Python中未使用的导入是否会影响性能?,python,performance,python-import,Python,Performance,Python Import,Python脚本中未使用的导入是否有任何影响?名称污染了名称空间,可能会干扰变量并占用一些内存。 此外,由于程序必须加载模块,因此启动时间较长 在任何情况下,我都不会因此变得太神经质,因为如果您正在编写代码,那么在修改代码时,您可能会不断地编写和删除import os。某些IDE as PyCharm会检测未使用的导入,以便您可以在代码完成或接近完成后依赖它们。定义“未使用”可能比您想象的要困难一些,例如test.py中的此代码: import sys import unused_stuff s

Python脚本中未使用的导入是否有任何影响?

名称污染了名称空间,可能会干扰变量并占用一些内存。
此外,由于程序必须加载模块,因此启动时间较长

在任何情况下,我都不会因此变得太神经质,因为如果您正在编写代码,那么在修改代码时,您可能会不断地编写和删除
import os
。某些IDE as PyCharm会检测未使用的导入,以便您可以在代码完成或接近完成后依赖它们。

定义“未使用”可能比您想象的要困难一些,例如test.py中的此代码:

import sys
import unused_stuff
sys.exit(0)
未使用的东西似乎未使用,但如果它包含:

import __main__
def f(x): print "Oh no you don't"
__main__.sys.exit = f

那么,运行test.py并不能满足您对随意浏览的期望。

因此,与没有这些不必要的导入相比,该程序将花费更多的时间。对吗?启动时间延迟可以可视化,方法是制作一组带有
打印“Hello”、\uuuuu name\uuuuu
的文件,然后导入它们。导入的所有内容必须至少解析一次,并且pyc/cache版本在每个运行周期至少解释一次。这可能会有点失控,尤其是如果一个导入的文件导入了其他文件,而这些文件又导入了更多的文件。希望没有人用这样的代码编写库。即使OP计划使用该模块,这种导入也是危险的。@joaquin没错,这是一个极端的例子,但这并不意味着没有模块在加载时有更微妙的副作用。这只是一个副作用的小例子:)我的个人库中有两个模块,它们唯一的API是导入,也就是说,您所做的就是导入它们,不需要调用任何东西。第一个是nice.py,它以较低的进程优先级运行程序,另一个是timing.py,它安装了一个atexit处理程序,以报告运行程序结束时经过的时间和时间戳。这两个API看起来都没有使用过,但事实上,它们只是有一个超简约的API。