Python嵌套循环缩进问题:print()语句执行时机疑问
关于Python嵌套循环中print执行顺序的疑问解答
嘿,我完全懂你的困惑!咱们先拿一个典型的示例代码来说明吧,我猜你写的代码大概是这样的:
for i in range(3): print(i, end=' ') for j in range(2): print(j, end=' ') print()
你之所以觉得print()应该在所有嵌套循环完成后才运行,核心是没搞清楚Python的缩进规则——这可是Python划分代码块的核心依据!
咱们拆解一下代码的执行逻辑:
- 外层是
for i循环,每一轮循环都会依次执行它缩进层级下的所有代码:- 先执行
print(i, end=' '),打印当前的i值,并且通过end=' '设置不换行; - 接着执行嵌套的
for j循环,把j的所有值依次打印出来,同样保持不换行; - 最后执行和
print(i...)同一缩进级别的print()——这个print()没有参数,默认会输出一个换行符,用来结束当前这一行的输出。
- 先执行
换句话说,print()确实不在嵌套的j循环里,但它是外层i循环的一部分,所以每轮i循环跑完j循环后,就会立刻执行这个换行的print(),而不是等所有i循环都结束。
如果你的预期是等所有嵌套循环都跑完再执行print(),那你得把print()的缩进去掉,让它和外层for i循环同级,比如:
for i in range(3): print(i, end=' ') for j in range(2): print(j, end=' ') print() # 现在这个print会在所有循环结束后才执行
这样修改后,所有的i和j值都会打印在同一行,最后才会换行。
内容的提问来源于stack exchange,提问作者Alan




