在 itertools 模块的文档中,我发现了这条评论
def dotproduct(vec1, vec2):
return sum(imap(operator.mul, vec1, vec2))
请注意,可以通过将全局查找替换为定义为默认值的局部变量来优化上述许多方法。例如,点积配方可以写成:
def dotproduct(vec1, vec2, sum=sum, imap=imap, mul=operator.mul):
return sum(imap(mul, vec1, vec2))
如何?。
是否有实际的明显加速(可以平衡较大函数签名的不便)?
如图所示,在哪些特定条件下使用局部变量是相关的?
编辑:我用 timeit 进行了测试,并且有任何相关的差异。
对于两个 40 项列表作为 vec1、vec2:
全局查找-> 3.22720959404
本地查找-> 3.19884065683
也就是说,只有大约。1% 的收益。