打印全局变量的值,然后改变蟒蛇值

问题描述 投票:0回答:1

全局关键字出现在函数用来指一个全局变量在该函数内并修改它。然而即使全球关键字不使用,如果我们只是尝试打印变量,蟒蛇假定它是被提及,只是说像现在这样打印全局变量。

a = 2
def foo():
    print(a)
foo()

上面的代码输出2.但下面的代码引发错误。

a = 2
def foo():
    print(a)
    a = 3
foo()

我得到一个UnboundLocalError说局部变量“a”被分配之前引用。现在,由于蟒蛇是一种解释语言和执行情况一行的时间,应该不是第一次打印的是2(如在第一种情况下)的全球价值,然后创建一个局部变量同名答分配给它3。在第二种情况下如何解释知情权的,我指的是在下一行“A”另一个变量的打印语句?为什么它不以同样的方式表现为上面?

PS:我不明白,使用global关键字可以帮助我的值更改为2〜3。

python global-variables interpreter
1个回答
0
投票

Python的字节码被解释; Python源首先编译成字节代码。

名称是一个单一的范围内的本地或全球性的,并且该确定是在编译时作出;您不能通过机能的研究切换一半。如果有任何分配的功能a,它是当地无处不在的功能,除非你使用global a

a = 2
def foo():
    global a
    print(a)
    a = 3

如果没有全球性的语句,print(a)指本地名称a,即使它的实际分配之前发生。

© www.soinside.com 2019 - 2024. All rights reserved.