我试图更好地理解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()
的作用域,还是在定义它的全局作用域?你知道吗
你在函数g和f中缺少全局操作 像这样:
您可以在documentation here和stack overflow here中找到有关全局和局部变量的更多信息
因为在cd1的函数的作用域中,没有什么是不想改变的。如果要在函数中更改
a
,则需要使用“global”:要打印出全局
a
,请按以下方式使用它:有一个关于} 的好例子
global
^{如果要将局部变量} :
a
与全局值a
一起使用^{您需要使用
global
关键字。你知道吗相关问题 更多 >
编程相关推荐