While循环中的var如何拦截Print函数并操纵var之外的变量?

时间:2018-11-13 18:09:53

标签: python python-2.7

我是Python的新手,但是很难理解以下While循环代码,因为它的行为截然不同。我知道此代码有效,但不知道如何工作。顶尖的Python专家也不知道。

x = 1
while x < 10:
    print x
    x = x + 1 ## How does this VAR manipulate Print as the VAR comes late in the code?

我不知道这是否与控制流或全局变量有关。请帮我更深入地了解。

2 个答案:

答案 0 :(得分:0)

x = 1 #Declares the variable while x < 10: #checks whether the value of x is less than 10 every time the loop runs print x #prints value of x for the each iterations(1 for first iteration, 2 for second and so on) x = x + 1 #this is the update part
让我再告诉您一件事,您这里没有任何全局变量的情况。
如果您在理解其全局或局部声明时遇到麻烦,建议您遵循此link

答案 1 :(得分:0)

我相信您的问题与范围有关。在上面的示例中,在第一行创建了var x的新内存地址,并且访问x的第2、3、4行上的任何代码都可以对该变量进行读/写。

这里我们只需要遵循两个规则:

  1. x必须在print之前声明,以便打印件可以访问该内存
  2. print必须在相同或内部范围内才能访问“ x”

示例1-有效(因为我们遵循规则1和2)

x = 1
print x

示例2-有效(因为我们遵循规则1和2)

x = 1
while x < 10:
    print x
    x = x + 1

示例3-有效(因为我们遵循规则1和2)

x = 1
while x < 10:
    print x
    x = x + 1
print x

示例4-无效(因为我们未遵循规则1并且print正在访问尚未在内存中创建的变量)

print x    
x = 1

示例5-无效(因为我们不遵循规则2并且print无法访问我们变量的范围,x在内存中不再存在)

y = 1
while y < 5:
    x = 1
    y = y + 1
print x

您最好通过练习1 阅读variable lifetime and scope in python上的整个章节,以获取良好的练习。