#PY小贴士# for 循环定义的变量,循环外可以用吗?

简介: 我们知道,在 python 中要获取一个变量的值,必须是先给它赋值过,不然就是未定义。那么这个 i,代码中没有显式的赋值,在循环体之外还可以用吗?

在使用 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(非私信)

提问时请表述清楚,附上必要代码、输出等截屏。

相关文章
|
Python
matplotlib 按指定的时间间隔生成坐标轴
matplotlib 提供了自定义生成时间轴的库,而当我们需要按照自己定义的时间间隔去生成时间轴时,时间轴并没有正常显示,只是按照一个时间跨度更大的方式显示,本文强制 matplotlib 严格按照要求自定义的时间间隔来坐标轴,并对每一行代码做了详细的说明。
7314 0
matplotlib 按指定的时间间隔生成坐标轴
|
8月前
|
人工智能 vr&ar
PSHuman:开源单图像3D人像重建技术,一张照片就能生成3D人像模型
PSHuman 是一种先进的单图像3D人像重建技术,仅需一张照片即可生成高度逼真的3D模型,支持面部细节、全身姿态和纹理恢复,适用于影视、游戏、虚拟现实等多个领域。
807 4
PSHuman:开源单图像3D人像重建技术,一张照片就能生成3D人像模型
|
9月前
|
网络协议 安全 网络虚拟化
openvpn-as的三种安装方式
OpenVPN 是一个开源的VPN软件包,支持多种操作系统,可创建基于SSL/TLS的安全隧道。它分为社区版
1840 2
|
Shell 网络安全
bash 和 zsh 命令行终端中的快捷键
bash 和 zsh 命令行终端中的快捷键
|
11月前
|
缓存 前端开发 UED
前端 8 种图片加载优化方案梳理
本文首发于微信公众号“前端徐徐”,详细探讨了现代网页设计中图片加载速度优化的重要性及方法。内容涵盖图片格式选择(如JPEG、PNG、WebP等)、图片压缩技术、响应式图片、延迟加载、CDN使用、缓存控制、图像裁剪与缩放、Base64编码等前端图片优化策略,旨在帮助开发者提升网页性能和用户体验。
2262 0
波士顿房价数据集 Boston house prices dataset
波士顿房价数据集 Boston house prices dataset
309 2
|
分布式计算 Java API
IDEA实现Java与Scala代码混合开发
IDEA实现Java与Scala代码混合开发
902 0
IDEA实现Java与Scala代码混合开发
|
XML 前端开发 Java
SpringBoot - SpringMVC的默认配置与修改
SpringBoot - SpringMVC的默认配置与修改
409 0
|
运维 文字识别 小程序
中国高校计算机大赛——微信小程序应用开发赛
中国高校计算机大赛——微信小程序应用开发赛
674 0
中国高校计算机大赛——微信小程序应用开发赛
|
机器学习/深度学习 数据可视化 PyTorch
模型推理加速系列 | 04:BERT加速方案对比 TorchScript vs. ONNX
本文以 BERT-base 的为例,介绍2种常用的推理加速方案:ONNX 和 TorchScript,并实测对比这两种加速方案与原始Pytorch模型格式的inference性能。