在Python中使用'for'的无限循环

Nis*_*hal 5 python for-loop infinite-loop python-3.x

为什么这不会创建无限循环?

a=5
for i in range(1,a):
  print(i)
  a=a+1
Run Code Online (Sandbox Code Playgroud)

或这个

for i in range(1,4):
  print(i)
  i=i-1
Run Code Online (Sandbox Code Playgroud)

或这个

for i in range(1,4):
  print(i)
  i=1
Run Code Online (Sandbox Code Playgroud)

我们有什么方法可以使用for循环创建无限循环?我知道有while循环,但我只是好奇.

Som*_*ude 5

range是一个,并在例如中使用range(1, a)创建该类的对象.此对象仅创建一次,不会在循环的每次迭代中重新创建.这就是第一个例子不会导致无限循环的原因.

其他两个循环不是无限的,因为与range对象不同,循环变量i 每次迭代时都重新创建(或者更确切地说重新初始化).当i循环迭代时,您在循环内分配的值将被覆盖.