gpt4 book ai didi

python - 在 python 中从全局范围解析变量

转载 作者:太空宇宙 更新时间:2023-11-03 12:20:45 24 4
gpt4 key购买 nike

我正在尝试更好地理解 python 中的作用域。我有以下玩具示例:

a = 1
print "in global: " + str(a)

def g():
a += 1
print "in g(): " + str(a)


def f():
a += 1
print "in f(): " + str(a)
g()

f()

我希望它能运行并打印出 1 然后 2 然后 2 再次。但是,我得到了一个错误:

UnboundLocalError: local variable 'a' referenced before assignment

我原以为 g()f() 都会从全局范围中拉取 a。不正确?

更新:感谢您的回答,但不清楚的是:如果我只想读取全局变量 a 并将其分配给我创建的局部变量,也命名为 a 这可能吗?

我这样做的原因是我想弄清楚 g() 在被调用时是继承 f() 的范围还是全局范围在哪里定义的?

最佳答案

您正试图在函数的外部范围内更改 aa 不在当前函数的范围内,这就是您收到此类错误的原因,因为您的函数对 a 一无所知。如果你想从你需要使用`global'的函数中改变a:

a = 1
print "in global: " + str(a)

def g():
global a
a += 1
print "in g(): " + str(a)


def f():
global a
a += 1
print "in f(): " + str(a)
g()

要打印出全局 a,请这样使用:

def f():
print a
new_a = a
print new_a

关于global有一个很好的例子here

如果您想使用局部变量 a 和全局 a 的值,请使用 globals :

def g():  
a = globals()['a']
a += 1
print "in g(): " + str(a)

关于python - 在 python 中从全局范围解析变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35306165/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com