python中 for循环的执行流程?

发布于 2022-09-11 17:46:36 字数 367 浏览 12 评论 0

squares = []  
for x in range(1, 5):
    squares.append(x)
    print(squares)

结果是

[1]
[1, 2]
[1, 2, 3]
[1, 2, 3, 4]

我的理解如下, 请问这是对的吗? 还是我强行解释?

x = 1, append(x)将1添加到列表. 此时squares = [1]
x = 2, 在列表squares = [1]的基础上,将数据2增加进去, 所以squares = [1, 2]
依次列推.

PS: 知道这个问题很初级, 但还是希望大神们能帮忙指教一下, 谢谢了.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

萌化 2022-09-18 17:46:36

从你的代码说起:

1 squares = []  
2 for x in range(1, 5):
3     squares.append(x)
4     print(squares)

第一行:squares = [] 定义了一个类型为列表的 squares 变量, 注意这个变量的作用域,这个变量是在 for 循环之外 。说得再直白点,就是变量 squares 从一开始进行了初始化,它的 id 在这段代码中是固定的。
第二行:定义了 for 循环为 4 重循环。
第三行:将变量 x 的值保存到列表 squares 的 尾部
第四行:每次循环都要打印出来变量 squares 的 当前 值。

我们看代码的运行情况,第一行定义了变量 squares 为空列表,再往下三行代码是 for 循环结构体,并进行了 4 次 循环。那么第一次循环的时候,变量 x 的值是 1 ,被保存到列表 squares 中,此时,列表的 当前 值是 [1],第二次循环的时候,变量 x 的值是 2 ,被保存到当前的列表的尾部,也就是 [1] 的尾部,那就成为了 [1, 2],以此类推。

所以你可以通过下面的代码看到,每次循环,变量 squares 这个列表的 id 是不变的。

1 squares = []  
2 for x in range(1, 5):
3     squares.append(x)
4     print(squares)
5     print(id(squares))

当然,如果你把对变量 squares 的定义放入 for 循环结构体中,它的 id 是会变化的吗,你可以用这个代码试试。


1 for x in range(1, 5):
2     squares = []  
3     squares.append(x)
4     print(squares)
5     print(id(squares))
ら栖息 2022-09-18 17:46:36

你 的 解释 是 对的呢

_蜘蛛 2022-09-18 17:46:36

@藕丝空间 , 这里又有个疑问, 能不能再帮我看下?

squares = []  
for x in range(1, 5):
    squares.append(x)
    print(squares)

结果是

[1]
[1, 2]
[1, 2, 3]
[1, 2, 3, 4]

很多课程讲的python代码执行流程:
1.python中代码从上到下执行.
2.循环内部的代码会一直循环, 直到条件不再成立.

然后
之前说到 squares = [],这个变量是在 for 循环之外.
第一次循环的时候,变量 x 的值是 1 ,被保存到列表 squares 中,此时,列表的 当前 值是 [1],
第二次循环的时候,变量 x 的值是 2 ,被保存到当前的列表的尾部,也就是 [1] 的尾部,那就成为了 [1, 2],

我的疑问是:
用pycharm的debugger单步运行了, 每次通过方法.append()增加的数据会被保存到顶行的列表squares = [] 里.
但squares = []在代码块的最上方, 又不在循环内部. 可为什么for循环一次, 它也能执行一次呢? 可能自己有点钻牛角尖, 走近死胡同了.

郁金香雨 2022-09-18 17:46:36

你去了解一下变量的作用域吧,LEGB法则

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文