SomeThing9 发表于 2021-2-2 15:31:54

21讲课后习题最后一题不是很理解求助一下

代码如下:
def make_repeat(n):
    return lambda s:s*n
double=make_repeat(2)
print(double(8))
print(double('fishC'))
会打印:16
fishCfishC
为啥会打印这两个数据   不太理解求解释一下谢谢!!!

逃兵 发表于 2021-2-2 15:48:27

本帖最后由 逃兵 于 2021-2-2 15:52 编辑

def make_repeat(n):
    return lambda s:s*n
make_repeat(n)会返回一个匿名函数(lmbda)

double=make_repeat(2)
给make_repeat传入一个参数2
相当于构成了一个函数double,这个double相当于
def double(s):
        return s*2
之后给double传入的参数会*2
第一个例子double(8) = 8 * 2 = 16
第二个例子double('fishC') = 'fishC' * 2 = 'fishCfishC'

延伸:
def make_fun(n):
    return lambda s:s**n

power = make_fun(2) #构成平方函数

print(power(3)) #3的2次方

Cubed = make_fun(3) #构成立方函数

print(Cubed(4)) #4的3次方

SomeThing9 发表于 2021-2-3 09:01:10

逃兵 发表于 2021-2-2 15:48
make_repeat(n)会返回一个匿名函数(lmbda)




好的谢谢大佬{:5_91:}
页: [1]
查看完整版本: 21讲课后习题最后一题不是很理解求助一下