第021次课后作业
这个double(8)的8为什么代表s呀?还有double为啥后边没括号,有点不理解def make_repeat(n):
return lambda s : s * n
double = make_repeat(2)
print(double(8))
print(double('FishC'))
make_repeat(2) 中的 2 应该是代表 n
然后之后 8 是代表 s
并返回 S* n 的值 liuzhengyuan 发表于 2020-6-28 21:18
make_repeat(2) 中的 2 应该是代表 n
然后之后 8 是代表 s
并返回 S* n 的值
主要是这一步不理解,double括号里面的数为啥代表s
double = make_repeat(2) 本帖最后由 Twilight6 于 2020-6-28 21:25 编辑
def make_repeat(n):
return lambda s : s * n
可以看成:
def make_repeat(n):
def func(s):
return s * n
return func
只不过 lambda 是匿名函数 没有函数名 所以这里 func 是我添加上去的,则你假如 这样调用 double = make_repeat(2)
那么就可以看成(实际上不能这样写哈只是给你演示的):
def make_repeat(2):
def func(s):
return s * 2
return func
因为 make_repeat 函数返回的是 func 这个函数 则这个时候 double = make_repeat(2) 就等价于 double = func
然后你再次调用 double(8) 相当于 func(8)则此时函数是这样的 :
def func(8):
return 8 * 2
所以返回的 16
而 FishC 也是 同理 只不过FishC * 2 是等于把字符串重复两遍后拼接
万仞飞霜 发表于 2020-6-28 21:24
主要是这一步不理解,double括号里面的数为啥代表s
double = make_repeat(2)
看楼上的的吧 ↑
解释的很好 liuzhengyuan 发表于 2020-6-28 21:25
看楼上的的吧 ↑
解释的很好
都是大神
页:
[1]