鱼C论坛

 找回密码
 立即注册
查看: 1840|回复: 7

[已解决]函数的赋值与调用

[复制链接]
发表于 2020-4-29 20:31:25 | 显示全部楼层 |阅读模式

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

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

x
小甲鱼Python课后习题第二十一讲的6.
请目测以下表达式会打印什么?
def make_repeat(n):
        return lambda s : s * n

double = make_repeat(2)
print(double(8))
print(double('FishC'))
最后打印的是

16
FishCFishC
不是特别理解
double = make_repeat(2)
print(double(8))这两句
这两句是将参数传递给谁了,为什么
最佳答案
2020-4-29 20:44:25
本帖最后由 zltzlt 于 2020-4-29 20:46 编辑

https://fishc.com.cn/forum.php?mod=viewthread&tid=166798

PS:如果你的问题已解决,请设置【最佳答案】。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-29 20:33:59 | 显示全部楼层
第一行的参数 传给 make_repeat 了
第二行的参数 传给 make_repeat 的返回值 double 了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-29 20:34:27 | 显示全部楼层
内层还有一个函数,也就是说,你传参传进的是内部的lambda函数。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-29 20:39:49 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-4-29 20:33
第一行的参数 传给 make_repeat 了
第二行的参数 传给 make_repeat 的返回值 double 了

是不是能这么理解
double = make_repeat(2)就是double=lamdba  s:s*2
double(8)  就是double(8)=lamdba s:s*2(此处s为8)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-29 20:43:21 | 显示全部楼层
君子好逑 发表于 2020-4-29 20:39
是不是能这么理解
double = make_repeat(2)就是double=lamdba  s:s*2
double(8)  就是double(8)=lamdba ...

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

使用道具 举报

发表于 2020-4-29 20:44:25 | 显示全部楼层    本楼为最佳答案   
本帖最后由 zltzlt 于 2020-4-29 20:46 编辑

https://fishc.com.cn/forum.php?mod=viewthread&tid=166798

PS:如果你的问题已解决,请设置【最佳答案】。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-29 20:49:14 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-29 21:07:54 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-11 19:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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