为了账号安全,请及时绑定邮箱和手机立即绑定

count()的返回值不是一个列表吗,怎么f1f2f3不是[1,4,9]而是9呢

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

f1, f2, f3 = count()


正在回答

2 回答

fs.append(f),按理说,f函数返回的是i*i是一个数值,不是一个函数,在f被调用的时候是会直接计算的呀

1 回复 有任何疑惑可以回复我~
fs.append(f)列表里添加的元素是3个函数


0 回复 有任何疑惑可以回复我~
#1

超人TT 提问者

fs.append(f),按理说,f函数返回的是i*i是一个数值,不是一个函数,在f被调用的时候是会直接计算的呀
2018-09-16 回复 有任何疑惑可以回复我~
#2

超人TT 提问者

我知道了我知道了,在调用count()时里面的f函数相当于内函数,被调用时不会执行,只有当f1f2f3被调用时才会执行
2018-09-16 回复 有任何疑惑可以回复我~
#3

qq_我就惯着你_0 回复 超人TT 提问者

内函数为啥没被执行,count里面的循环都执行了,循环里面不是也调用内函数f了吗。。
2018-10-02 回复 有任何疑惑可以回复我~
#4

超人TT 提问者 回复 qq_我就惯着你_0

内函数就是能有延迟执行的这个用法,具体原理我也不清楚。
2018-10-04 回复 有任何疑惑可以回复我~
查看1条回复

举报

0/150
提交
取消
python进阶
  • 参与学习       255665    人
  • 解答问题       2949    个

学习函数式、模块和面向对象编程,掌握Python高级程序设计

进入课程

count()的返回值不是一个列表吗,怎么f1f2f3不是[1,4,9]而是9呢

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信