Python中for循环用i和_为何得到不同执行结果?
为什么这两段for循环输出结果不一样?
核心不是i和_的区别——_只是Python里约定俗成的“我不需要用到这个循环变量”的占位符,和用i当循环变量本身功能完全一样。问题出在两段代码的逻辑差异:
第一段代码的逻辑
for i in range(64): i = i * 2 print(i)
这里的i是循环迭代器的变量,每次循环开始时,Python都会把range(64)的下一个值重新赋值给i。你在循环里写i = i * 2只是临时修改了这一轮的i,但下一次循环开始,i会被range的新值覆盖。比如:
- 第一次循环:
i被设为0 → 乘2得0 → print - 第二次循环:
i被设为1 → 乘2得2 → print - 第三次循环:
i被设为2 → 乘2得4 → print - ...以此类推,最终输出是0,2,4,6...(你提到的2,4,6应该是代码中
range起始值为1,但逻辑本质不变)
第二段代码的逻辑
i = 1 for _ in range(64): i = i * 2 print(i)
这里的i是循环外定义的独立变量,循环里的_只是占位,我们根本没用到它的值。每次循环修改的是外部的i,这个i不会被循环迭代器重置:
- 第一次循环:外部
i=1→ 乘2得2 → print,此时外部i变成2 - 第二次循环:外部
i=2→ 乘2得4 → print,外部i变成4 - 第三次循环:外部
i=4→ 乘2得8 → print - ...以此类推,最终输出是2,4,8,16...这种指数增长的结果
总结:两段代码的差异和用i还是_没关系,关键是你修改的是循环迭代器自带的变量,还是外部独立的变量。
内容的提问来源于stack exchange,提问作者Apex_Champion
相关产品推荐
相关产品推荐

