繁体   English   中英

如何使变量在另一个函数中可访问

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM