最新回答 / KELLY4340747
def calc_prod(l): def prod(l): def f(x,y): return x*y return reduce(f,l) return prodf = calc_prod([1, 2, 3, 4])print f([1, 2, 3, 4])你定义返回的prod函数如果需要输入参数,那么f在调用的时候也必须要给参数才能调用
2016-11-14
最新回答 / 慕粉4354677
做法:f(*arg, **kwarg) 前忘记了 return. 原因:函数f(*arg, **kwarg) 就是factorial函数,没有返回这个函数,自然就计算不出factorial(10)
2016-11-12
最新回答 / mirosar
f()是一个闭包,所以f()才可以引用外层for循环里面的变量i,否则内层函数根本引用不了外层count()函数的局部变量i。引用完然后就会return内层函数f()的计算结果。要正确使用闭包就要确保引用的外层变量i在内层f()函数return后i外层值不变。而这个代码在调用完count()时就已经完成了for的3次循环(因为f()是闭包),所以当然都是执行完for时的结果了。
2016-11-12
已采纳回答 / 亮亮13
reduce 的原型要求就是两个参数,你写一个就错了,python 一个问题只有一个最好的解决办法,如果想写其他的实现方式 c语言不错可以有很多种写法。
2016-11-12
最新回答 / 不劳虎
由于factorial已经被装饰器包裹了一层,你再做g1=performance(factorial)相当于包了两层装饰器,即g1=performance(performance(factorial))
2016-11-08
已采纳回答 / Spider_Maker4260916
第一个没什么不同就像是 a = 1,a = a +1,b = a+1 一样你先将f1装饰了,然后再吧装饰后的f1再装饰后 赋给 g1,因为f1被你装饰两次 所以会打印call fn()出来
2016-11-06
已采纳回答 / 慕莱坞9796870
if self.score > s.score: return -1 elif self.score > s.score: 这两个地方的条件写成一样的了 return 1
2016-11-03