saj*_*jid 0 python for-loop python-import python-3.x
我一直在维护一个项目.我发现有人编写了一个函数,他在for循环中创建了一个import语句
for obj in obj_list:
from Levenshtein._levenshtein import distance
if distance(obj.title, "some string") <= 2:
do something
Run Code Online (Sandbox Code Playgroud)
我假设在for循环中导入一些东西会导致不必要的指令执行.因此,我想重构代码.但要做到这一点,我需要一个基本原理来支持我的假设,即在for循环中导入不是一个好习惯.我的假设是否正确?
只需移出import循环即可.你是正确的,这导致Python每次迭代都需要额外的工作.
Python import语句有两个作用:
因此,每次循环迭代Python都会检查模块是否已加载(大致相当于检查'Levenshtein._levenshtein' in sys.modules),然后设置名称distance.
如果循环中没有其他内容将名称设置distance为其他任何内容,则可以安全地将导入移出循环并保存自己的那些检查.如果存在此类代码,则将其重构为不使用相同的名称,并将导入移出循环.