唱离歌的老鼠 发表于 2017-11-6 16:44:44

作业题,关于一个函数的问题21讲,简单。回答领鱼币

def make_repeat(n):
      return lambda s : s * n

double = make_repeat(2)
print(double(8))
print(double('FishC'))


想问一下,dobule=make_repeat(2) 然后又调用了double,并传了8.问题是函数make_repeat(n)里面只可以传一个参数啊,这样子岂不是传了两个,为什么还是对的?

丶忘却的年少o 发表于 2017-11-6 16:47:24

嗯,我也不会,交给留下的大神吧{:10_245:}

唱离歌的老鼠 发表于 2017-11-6 16:54:21

丶忘却的年少o 发表于 2017-11-6 16:47
嗯,我也不会,交给留下的大神吧

你是来混鱼币的吗?{:5_96:}

zata 发表于 2017-11-6 17:14:33

retrun lambda s : s * n
返回一个匿名函数make_repeat(2)(8) /('FishC')n=2s=8/FishC

colinshi 发表于 2017-11-6 17:15:02

本帖最后由 colinshi 于 2017-11-6 17:18 编辑

先去看匿名函数和高级函数。
lambda s : s * n这个就关键所在。
def make_repeat(n):
    def a(s):
      return s*n
    return a

double = make_repeat(2)
print(double(8))
print(double('FishC'))
改造了一下。。。

timeislife 发表于 2017-11-6 17:55:49

内嵌函数,其实不是两个参数,而是外部函数和内部函数各一个参数

p5494846 发表于 2017-11-6 18:04:15

函数的嵌套,闭包的内容,double(8),这个8不是传给了n,而是传给了内部函数的变量s

丶忘却的年少o 发表于 2017-11-6 19:15:41

唱离歌的老鼠 发表于 2017-11-6 16:54
你是来混鱼币的吗?

这都被你发现了{:10_245:}

p5494846 发表于 2017-11-7 09:02:46

竟然被选为最佳答案了,感谢啊,第一个最佳{:10_254:}{:10_254:}

lxping 发表于 2022-11-10 19:32:06

打开学习
页: [1]
查看完整版本: 作业题,关于一个函数的问题21讲,简单。回答领鱼币