我以前学过 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
