python为啥会出现这种情况

python为啥会出现这种情况

for i in range(5):
   print(i)
   i+=2

range函数遍历的i为什么没有被赋值,输出为01234,不是024

python中,for循环靠的是索引,i只是该索引的值,修改这个无效

因为i 是按照range(5)进行遍历的,在i=0执行完 i+=2 之后,i 又重新被赋值为1了
for i in range(5)的意思是,i 依次 被赋值为 0 、1、2、3、4,虽然你执行了i +=2,但是上一次代码执行完毕后,会重新给 i 赋值:
i=0 : print(i) i+=2 # 进入下一次循环,将1赋值给 i ,所以 i+=2对循环没有影响。
i=1: print(i) i+=2 # 进入下一次循环,将2赋值给 i
...
以此类推

你可以理解为for in循环每次都会给i重新赋值,而像for循环只有一次初始化
想深入一下的话,可以去了解下【迭代器】,面向对象的语言一般都有这个概念

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632