君子好逑 发表于 2020-4-29 20:31:25

函数的赋值与调用

小甲鱼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:33:59

第一行的参数 传给 make_repeat 了
第二行的参数 传给 make_repeat 的返回值 double 了

qiuyouzhi 发表于 2020-4-29 20:34:27

内层还有一个函数,也就是说,你传参传进的是内部的lambda函数。

君子好逑 发表于 2020-4-29 20:39:49

永恒的蓝色梦想 发表于 2020-4-29 20:33
第一行的参数 传给 make_repeat 了
第二行的参数 传给 make_repeat 的返回值 double 了

是不是能这么理解
double = make_repeat(2)就是double=lamdbas:s*2
double(8)就是double(8)=lamdba s:s*2(此处s为8)

永恒的蓝色梦想 发表于 2020-4-29 20:43:21

君子好逑 发表于 2020-4-29 20:39
是不是能这么理解
double = make_repeat(2)就是double=lamdbas:s*2
double(8)就是double(8)=lamdba ...

是的

zltzlt 发表于 2020-4-29 20:44:25

本帖最后由 zltzlt 于 2020-4-29 20:46 编辑

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

PS:如果你的问题已解决,请设置【最佳答案】。

君子好逑 发表于 2020-4-29 20:49:14

永恒的蓝色梦想 发表于 2020-4-29 20:43
是的

谢谢大佬

永恒的蓝色梦想 发表于 2020-4-29 21:07:54

君子好逑 发表于 2020-4-29 20:49
谢谢大佬

{:10_247:}
页: [1]
查看完整版本: 函数的赋值与调用