找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 218|回复: 3

[求助] 函数作为返回值,有疑问请大大指导~

1

主题

3

帖子

3

积分

贫民

积分
3
马踏飞燕雪没青 发表于 2018-1-30 15:13:12 | 显示全部楼层 |阅读模式
本帖最后由 马踏飞燕雪没青 于 2018-1-30 15:14 编辑

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())
print(f2())
print(f3())
运行结果:
>>>9
>>>9
>>>9


1.为什么运行结果是数字不是集合?
2.为什么三个f结果一样?

谢谢(♡˙︶˙♡)

回复

使用道具 举报

1

主题

3

帖子

3

积分

贫民

积分
3
马踏飞燕雪没青  楼主| 发表于 2018-1-30 15:13:53 | 显示全部楼层
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())
print(f2())
print(f3())

运行结果:
>>>9
>>>9
>>>9
回复 支持 反对

使用道具 举报

1

主题

3

帖子

3

积分

贫民

积分
3
马踏飞燕雪没青  楼主| 发表于 2018-1-31 11:18:54 | 显示全部楼层
f1, f2, f3 = count(),这句话的意思是f1=count()[0],f2=count()[1],f3=count()[2].
所以懂了
回复 支持 反对

使用道具 举报

1

主题

7

帖子

7

积分

贫民

积分
7
newlearn 发表于 2018-2-12 18:01:36 | 显示全部楼层
典型闭包问题 执行完for循环后 i 的值是 3 执行函数输出结果肯定是9
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表