【求解】学习Python返回函数过程中对一个例子有疑问,希望大家帮忙解释下。

【求解】学习Python返回函数过程中对一个例子有疑问,希望大家帮忙解释下。

爱的故事 发布于 2021-11-27 字数 685 浏览 748 回复 3

在学习python过程中的一个例子中有一个疑问,例子如下

***************************************8

def count():

    fs = []

    for i in range(1, 4):

        def f():

             return i*i

        fs.append(f)

    return fs

f1, f2, f3 = count()

print(f1(),f2(),f3())

结果为

9 9 9 

*************************************************

问题是该函数返回的应该是返回count()函数中的fs,而fs应该是一个list的类型,为什么打印出来的值不是

[9] [9] [9]

如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

扫码加入群聊

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

凡尘雨 2021-12-01 3 楼

count函数运行完以后,

fs = [f, f, f]

[f1, f2, f3] = [f,  f, f]

相当于

f1 = f

f2 = f

f3 = f

f函数返回的是i的平方,i是3,所以返回9, 9, 9

月牙弯弯 2021-12-01 2 楼

count返回的是闭包函数 f,因此 f1、f2和f3 都是相同的函数,
print(f1(),f2(),f3())返回的就是 9, 9, 9

卸妝后依然美 2021-11-29 1 楼
def test():
    a=1
    b=2
    c=3
    return [a,b,c]

f1,f2,f3=test()
print f1,f2,f3

输出:1 2 3

跟你的方法类似