最赞回答 / 慕田峪2730464
在count函数里的循环只是定义了三个函数f,并把它们加入到fs列表中,最后count返回的是fs列表,运行f()执行的是 def f(): return i*i这段代码。此时由于i=3,故函数f1,f2,f3返回值均为9
2016-07-12
最新回答 / CuiYS
lazy_sum()相当于calc_prod(lst)的内部函数,所以calc_prod(lst)的形参lst相当于该函数内部的“全局变量”,在整个calc_prod(lst)函数范围内都是“可见的”,即lazy_sum()也是可以见到lst的,所以lazy_sum()可以直接使用lst。(我也是刚刚弄清楚这个问题,回答比较粗浅,希望见谅)
2016-07-12
已采纳回答 / 用户1097865
就像射箭一样,当长官命令士兵放箭的时候,士兵总要从箭囊拿出一只箭搭在弓弦上,然后再射出去。但现在长官的命令分成了两个,先拿箭,再放箭。定义lazy_prod()的作用就是使prod()的作用变成“拿箭”,调用lazy_prod()的时候再“放箭”。
2016-07-11
已采纳回答 / TracyCRI
感觉是x>y返回-1就是说当-1时,那么x就比y大 x<y返回1就是说当1时,那么x就比y小 x=y返回0就是说当0时,那么x就和y相等因此返回1 -1 0会对应不同的大小关系,这很明显就能进行排序了,而且x,y有个先后顺序,也不一定x>y就一定要返回-1,返回值都是自己定的。
2016-07-10
最赞回答 / 熊xd
一个占位符,可以了理解为什么都不做。一般用于空的语句块,因为语句块不能为空,但你确实是在里面不写东西,python会出错,加个pass就没问题了。有很多例子:<...code...>这里创建了一个名为EnterError的Exception(所有错误的基类)的子类,但本身没用,那为什么还要创建呢?原因:<...code...>如果不是数,就会引发一个错误(raise就是引发错误),类型为我们自创的EnterError,说白了就是我们创建了一个名字响当当的错误。
2016-07-08
最新回答 / CuiYS
在答案的体系下是不行的,因为它后面的代码要求它必须返回一个函数(f = calc_prod([1, 2, 3, 4]) print f() 。) 而第三个定义的函数只是用于计算乘积,为第二个函数所利用,而第一个函数返回第二个函数,所以可以把第二个函数看成一个传导介质。当然看起来很绕,这主要是编者用来给初学者联系而已,当然还有其他简洁的方法,比如匿名函数什么的
2016-07-07