You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

for/while循环语句中的变量是否仅在首次执行时求值?

Python循环语句的变量求值规则

核心规则

  • for循环:in关键字后的可迭代对象表达式,仅在循环首次启动前完成1次求值,生成迭代器后,后续每轮迭代都不会重新计算该表达式。哪怕循环体内修改了表达式引用的变量,也不会改变已经生成的迭代逻辑。
  • while循环:while后的条件判断表达式,会在每一轮循环启动前重新求值,根据变量的最新值判断条件是否成立,再决定是否继续执行循环体。

示例代码运行说明

你提供的测试代码:

arr = [2, 3, 4]

for i in range(len(arr)):
    arr.append(5)

实际运行逻辑和结果:

  1. 循环启动前优先计算range(len(arr)),此时arr初始长度为3,最终生成固定遍历0、1、2三个值的range迭代器
  2. 循环总共执行3次,每次执行都会向arr末尾追加元素5
  3. 循环会正常终止,不会出现无限循环,运行结束后arr的值为[2, 3, 4, 5, 5, 5]

常见误区提醒:很多新手会误以为上述代码会无限追加5触发死循环,本质是混淆了for和while的求值逻辑。如果需要每轮都根据数组最新长度做判断,要使用while循环实现,例如while len(arr) < 10: arr.append(5),这段代码每轮都会重新计算len(arr),直到数组长度到10才会停止,如果条件设置不合理很容易触发无限循环。

内容的提问来源于stack exchange,提问作者Wyatt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 16:18:24