在使用 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)
在 #PY小贴士# 里,我们会分享 python 知识点、开发小技巧、学习中的常见问题等。篇幅短小,适合碎片时间阅读,欢迎关注!
本栏目接受投稿,采纳后将署名发表,可附个人博客、公众号、Github等。
如果你在编程学习中有疑问,可通过以下方式向我们提问:
1. 加入码上行动答疑群(最及时响应)
2. 加入知识星球 https://t.zsxq.com/IiAiiQj
3. 发微博加上 #编程教室# 并 @Crossin(非私信)
提问时请表述清楚,附上必要代码、输出等截屏。