鱼C论坛

 找回密码
 立即注册
查看: 1213|回复: 5

[已解决]21课的课后习题,可以讲解一下吗

[复制链接]
发表于 2020-2-25 12:05:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

double = make_repeat(2)
print(double(8))
print(double('FishC'))
最佳答案
2020-2-25 12:11:03
本帖最后由 qiuyouzhi 于 2020-2-25 12:14 编辑
余绍铭 发表于 2020-2-25 12:05
不理解为什么输出是     16   fishcfishc


因为里边有两个函数啊
拆开来看:
make_repeat的返回值是一个匿名函数,而这个函数则是返回make_repeat的参数n乘以
这个匿名参数自己的参数s
第一个,double这个变量先设其中一个参数为2,
然后再传入剩下的一个参数(传入了8),2*8就是16,这就是第一个
第二个,是一个字符串,字符串的乘法就是重复打印这个字符串,
打印“FishC”两次,就是FishCFishC
如果有帮助请设最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-2-25 12:05:58 | 显示全部楼层
不理解为什么输出是     16   fishcfishc
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-25 12:11:03 | 显示全部楼层
本帖最后由 zltzlt 于 2020-2-25 12:13 编辑

这样可能就好理解了:
def make_repeat(n):
    def double(s):
        return s * n
    return double


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

make_repeat 函数的返回值是内嵌函数 double 。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-25 12:11:03 | 显示全部楼层    本楼为最佳答案   
本帖最后由 qiuyouzhi 于 2020-2-25 12:14 编辑
余绍铭 发表于 2020-2-25 12:05
不理解为什么输出是     16   fishcfishc


因为里边有两个函数啊
拆开来看:
make_repeat的返回值是一个匿名函数,而这个函数则是返回make_repeat的参数n乘以
这个匿名参数自己的参数s
第一个,double这个变量先设其中一个参数为2,
然后再传入剩下的一个参数(传入了8),2*8就是16,这就是第一个
第二个,是一个字符串,字符串的乘法就是重复打印这个字符串,
打印“FishC”两次,就是FishCFishC
如果有帮助请设最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-25 14:34:52 | 显示全部楼层
假面的假面 发表于 2020-2-25 14:29
请教一下,double=make_repeat(2)这句是跟n进行传参处理是么?我有点不太理解的是一个函数内有两个变量, ...

1,函数内有两个参数,不是变量
2,make_repeat是一个嵌套函数,有两个参数
而你的匿名函数只有一个参数,当然会报错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-25 14:45:22 | 显示全部楼层
假面的假面 发表于 2020-2-25 14:43
您的意思,double=make_repeat(2)是给n进行传参,并且把make_repeat这个函数赋值给了变量double。。。在 ...

对的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-6-8 20:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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