关于python 闭包(2-9)这节课遇到的问题

def count():
    fs = []
    for i in range(1, 4):
        
        def f(j):
            def g():
                return j*j
            return g
        
        r = f(i)
        fs.append(r)
    return fs

我在编译器里输了这段代码,然后执行:

f1 = count()

打印f1:(f1打印出的地址是个g函数集合)

[<function g at 0x0000000002ECE358>, <function g at 0x0000000002ED0CF8>, <function g at 0x0000000002ECE3C8>]

然后在执行:

f1,f2,f3 = count()

打印f1:

<function g at 0x0000000002ECE4A8>

这时候f1打印出的地址不是集合而是单个g函数,这是为什么?



vampire小奇
浏览 1341回答 1
1回答

AIxer

嗯~,怎么说呢~,这样吧,举个例子:Python语言允许这样赋值: ,当执行完那段代码后,count()返回的列表里的元素就这样被分配下去了啦~,^_^  希望对你有用~
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python