在使用 for 循环时,需要定义变量,大多数时候我们都会用一个 i 来表示:
for i in range(10):
print(i)
我们知道,在 python 中要获取一个变量的值,必须是先给它赋值过,不然就是未定义。那么这个 i,代码中没有显式的赋值,在循环体之外还可以用吗?
答案是肯定的。
for i in range(10):
pass
print(i)
对此你可以理解成:每次循环,都做了一个 i = 的赋值。
所以,循环外的 i 会保留它在循环中最后的值。可以用它来判断循环进行到了哪里:
for i in range(10):
if i * 3 > 10:
break
print(i)
不过直接在循环外使用循环变量也是有风险的,因为循环有可能一次都没有执行:
for i in range(-10):
pass
print(i)
这时程序就会报错,因为 i 从未被赋值过。
如果确定要在循环外使用 i 的值,可以在循环之前对 i 做一次赋值。这样既不影响循环的正常执行,也避免了未定义的错误:
i = -1
for i in range(-10):
pass
print(i)
联系客服