请目测以下表达式会打印出什么?
def make_repeat(n):return lambda s : s * n
double = make_repeat(2)
print(double(8))
print(double('FishC'))
为什么会打印出:
16
FishCFishC
首先你的n是2 ,其次你在double函数里面自定义了一个s*n的函数,也就是嵌套了一个子函数,现在double()就是调用的这个自定义的函数 xiongjingkui 发表于 2015-7-27 11:27
首先你的n是2 ,其次你在double函数里面自定义了一个s*n的函数,也就是嵌套了一个子函数,现在double()就 ...
那为什么执行double(8)于double(“fishC”)时将实参传给了形参 s
而不是给形参n
double=make_repeat(2)
这句应该怎么理解呢?
{:9_228:} 默.默 发表于 2015-7-27 13:26
那为什么执行double(8)于double(“fishC”)时将实参传给了形参 s
而不是给形参n
double=make_repea ...
那句就是已经将2传给了n,就是相当于这样:double(8)=make_repeat(2)(8),这种嵌套的赋值先赋给外层函数,再赋给里层函数 xiongjingkui 发表于 2015-7-27 15:14
那句就是已经将2传给了n,就是相当于这样:double(8)=make_repeat(2)(8),这种嵌套的赋值先赋给外层函数 ...
理解了,谢谢你哦{:9_228:} 默.默 发表于 2015-7-27 15:45
理解了,谢谢你哦
不客气,互相帮助{:9_240:} lambdas: s * 2相当于def func(s):
return s * 2不过这个函数没有名字(也不叫func) 戴宇轩 发表于 2015-7-27 16:51
相当于不过这个函数没有名字(也不叫func)
吊~~~瞬间就懂了 谢谢哈 print(double('FishC'))
FishCFishC还有不太理解。麻烦可以解释一下吗{:10_254:}
瞬间理解!
页:
[1]