Python for loop效率问题:循环in后接函数调用的执行机制问询
Python for循环中in后函数调用的执行次数说明
结论
该函数调用仅会执行一次,返回的列表会在整个循环执行期间暂存于内存中,不会在每次循环迭代时重复触发函数调用。
原理
Python解析for循环语法时,执行逻辑分为两个固定步骤:
- 先对
in关键字后的表达式完整求值,得到可迭代对象 - 基于第一步得到的可迭代对象创建迭代器,依次取出元素赋值给循环变量,执行循环体
整个循环迭代的过程中,不会重复执行in后的表达式。
验证示例
我们可以给函数添加日志打印验证执行次数:
def fun(): print("fun函数被触发执行") return [1,2,3] for i in fun(): print(i)
运行输出结果如下:
fun函数被触发执行 1 2 3
从输出可以明确看到,函数仅在循环启动前被调用1次,后续三次迭代遍历的都是首次调用返回的列表对象。
内容的提问来源于stack exchange,提问作者Abhiram NS
相关产品推荐
相关产品推荐

