关于python闭包的问题,内部函数可以获取外部函数的变量吗?

def lazy_sum(*args):
    ax = 0
    def sum():
        for n in args:
            ax = ax + n        return ax    return sum
    
f = lazy_sum(1, 3, 5, 7, 9)print f()

为什么这时会报错ax=0未声明,而这样:

def test():
    x = 1
    def child():
        print 'x+x=',x+x        return x+x
    x = x + child()    return x

f = test()print f

就没问题呢?

刚刚又试了一下,第一段程序改成这样就可以了:

def lazy_sum(*args):
    ax = 0
    def sum():
        for n in args:
            c = ax + n        return c    return sum

f = lazy_sum(1, 3, 5, 7, 9)print f()

我在想,是不是内部函数可以获得外部函数的变量,但是却不能修改它?


eveline
浏览 1396回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python