Skip to main content
 首页 » 编程设计

Python之为什么我们必须在 while 循环中而不是在 for 循环中初始化标识符

2025年05月04日14leader

我以前学过 Visual Basic,现在我正在学习 Python。我意识到在 Python 中,我们不必在 for 循环 中为标识符初始化一个值,但在 while 循环 中则相反。这对我来说看起来很陌生,因为在 Visual Basic 中,我们必须在两个循环中都声明一个变量作为标识符。

例如,来自 Python wiki,

x = 1 
while True: 
    print "To infinity and beyond! We're getting close, on %d now!" % (x) 
    x += 1 

完美运行。但是,在我注释了 x = 1 之后,它产生了一个错误。为什么它不能像 for 循环 where x 从 0 开始那样运行?

此外,即使我们在for循环中为标识符赋值,例如,

num = 10 
for num in range(5): 
    print num 
print num 

循环将覆盖赋值的值。为什么会这样?

我知道这里有很多 for loop 和 while loop 问题,但大多数都是 OP 代码的案例研究。我想要的是关于 Python 结构本身和执行 for 循环 或 while 循环 时语言的一些底层操作的更一般的解释。此外,在这种情况下,我指的是 Python 2.7.11。如果您能指出 3.5.1 的结构差异,我将不胜感激。非常感谢。

请您参考如下方法:

x = 1 
while True: 
    print "To infinity and beyond! We're getting close, on %d now!" % (x) 
    x += 1 

如果您评论 x = 1,此行会引发错误:

x += 1 

因为它的意思是,x = x + 1,因为 x 没有定义,它会引发错误(python 不知道什么值加 1)

num = 10 
for num in range(5): 
    print num 
print num 

您在循环内和循环外对两个变量使用相同的名称,这就是为什么您在循环内有另一个 num 值的原因。

好的做法是在循环变量内为变量使用另一个名称,因为您确实不需要像在循环外那样使用相同的 for 循环变量

所以,你可以这样写:

num = 10 
for i in range(5): 
    # play with num and i variables 
    num += i * 2 
 print num