for i in range(10) .i 在循环内部的改变不会影响到判断条件吗,

weifeng378 2016-12-17 05:33:25
for i in range(10):
print(i)
i += 2
print(i)
print("-------------------")

i 在循环内部的改变不会影响到判断条件吗,还是作用域不一样,
能不能给说明下他的运行机制.
...全文
1235 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
QuantumEnergy 2016-12-22
  • 打赏
  • 举报
回复
不影响的,你可以这样认为每次进入循环执行i=x的操作,而python每次=操作都会新引用,你可以print id(i)看看,更深层次就是所谓的call by sharing 机制java ,js都类似,而c++是不同的。
vfx_dli 2016-12-19
  • 打赏
  • 举报
回复
不影响……你迭代的是一个迭代器。你也可以当成一个列表。每次把列表中的一个数拿出来用一下而已。python的for其实不是常规的for。tpython的for其实是for each
混沌鳄鱼 2016-12-17
  • 打赏
  • 举报
回复
python 的for 和C语言的for完全不是一东西。 准确地说在python中for是迭代

>>> lst = range(3)
>>> iter_obj = lst.__iter__()
>>> i = iter_obj.next()
>>> i
0
>>> i = iter_obj.next()
>>> i
1
>>> i = iter_obj.next()
>>> i
2
>>> i = iter_obj.next()

Traceback (most recent call last):
  File "<pyshell#12>", line 1, in <module>
    i = iter_obj.next()
StopIteration
>>> 
上面这个过程就是for的实现机制,结束条件是StopIteration异常,和变量i没有任何关系。

37,721

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧