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

文中例子:f()这里输出10?

def calc_sum(lst):
   def lazy_sum():
       return sum(lst)
   return lazy_sum

>>> f = calc_sum([1, 2, 3, 4])

>>> f

>>> f()
10

1.最后一步这里f()没有输入东西,为什么输出结果是10呢?这种f()的格式是什么意思呢?

2.我尝试f([1,2,3])提示我不能输入:TypeError: lazy_sum() takes no arguments (1 given)

  我就猜测文中这里f = calc_sum([1, 2, 3, 4])=lazy_sum([1,2,3,4])=sum([1,2,3,4])=10

  是不是让f是一个数字了呢? 但是我尝试print f 是没有输出的

哪位大神能告诉我这个地方f 到底是什么?f()又是什么呢?

正在回答

2 回答

f=calc_sum()    --->返回值:无

f                        ---> 返回函数:lazy_sum()

f()                     ---->返回值:lazy_sum的值

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

# 请仔细往下看


>>> def calc_sum(lst):

   def lazy_sum():

       return sum(lst)

   return lazy_sum


>>> f = calc_sum([1, 2, 3, 4])

>>> f    # 函数名是一个对象(其实就是个地址) 指向0x022DFF70这个空间

<function lazy_sum at 0x022DFF70>   #  这里讲到了 lazy_sum 是一个function(函数)

>>> f()  # 函数地调用当然要有括号了呀

10

>>> 


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

举报

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

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

进入课程

文中例子:f()这里输出10?

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