关于21课第6题
原题如下:请目测以下表达式会打印什么?
def make_repeat(n):
return lambda s: s * n
double = make_repeat(2)
print(double(8))
print(double('FishC'))
输出结果如下:
16
FishCFishC
我的问题:
完全不明白结果是怎么产生的?
请有耐心、思路清晰、关爱小白人士解答,感谢~ 这里用到了闭包和匿名函数,如果不是很清楚再看看小甲鱼的视频。
如果不用匿名函数可以写成
def make_repeat(n):
def fun(s):
return s * n
return fun def make_repeat(n): #2.调用了这个函数,n=2
return lambda s: s * n #3.返回一个匿名函数:lambda s: s * 2
double = make_repeat(2)#1.传入参数n=2并调用函数,并将结果赋值给double。
#4.double赋值为匿名函数,匿名函数等价于:
#def ds(s):
# return s*2
print(double(8)) #5.把8作为参数,调用匿名函数,计算结果为16
print(double('FishC'))#6.把'FishC'作为参数,调用匿名函数,计算结果为'FishC''FishC' 应该是匿名函数比较复杂,
如果不用匿名函数可以写成:
def make_repeat(n):
def double(s):
return s * n
return double
double = make_repeat(2)
print(double(8))
print(double('FishC')) 笨鸟学飞 发表于 2020-10-30 00:05
def make_repeat(n): #2.调用了这个函数,n=2
return lambda s: s * n ...
感谢各位大神,我理了一下思路。应该是我对于:
print(double(9))
print(double('Fishc'))
以上行代码是如何把 “9” 和 "FicshC" 这两个实参传入子函数里面过程的疑惑。 冬雪雪冬 发表于 2020-10-29 17:42
这里用到了闭包和匿名函数,如果不是很清楚再看看小甲鱼的视频。
如果不用匿名函数可以写成
感谢各位大神,我理了一下思路。应该是我对于:
print(double(9))
print(double('Fishc'))
以上行代码是如何把 “9” 和 "FicshC" 这两个实参传入子函数里面过程的疑惑。 笨鸟学飞 发表于 2020-10-30 00:05
def make_repeat(n): #2.调用了这个函数,n=2
return lambda s: s * n ...
感谢各位大神,我理了一下思路。应该是我对于:
print(double(9))
print(double('Fishc'))
以上行代码是如何把 “9” 和 "FicshC" 这两个实参传入子函数里面过程的疑惑。
页:
[1]