[英]How to make variable accessible inside another function
考虑以下示例:
def func1():
val = 1
res = [1]
def fun2():
print(res)
print(val)
val = 2
fun2()
print(val)
func1()
它引发以下异常:
UnboundLocalError: local variable 'val' referenced before assignment
列表res
可以由fun2
访问,但val
无法访问。 我知道list
是可变的,而int
不是,但是有没有办法使fun2
也可以访问val
? 在一个类中,我可以使用self.val
轻松实现这self.val
,但是有没有办法在函数内部做到这一点?
使用nonlocal
语句可使内部函数内部的封闭函数中定义的变量可用,如下所示:
def func1():
val = 1
res = [1]
def fun2():
nonlocal val
print(res)
print(val)
val = 2
fun2()
print(val)
func1()
另请参阅: 早期的SO问题 。
您可以通过以下方式进行操作:
def func1():
val = 1
res = [1]
def fun2(val=val, res=res):
print(res)
print(val)
val = 2
return val
val = fun2()
print(val)
然后输出
>>> func1()
[1]
1
2
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.