最赞回答 / ES716
初学,不知道解释的对不对啊第一个问题:fs.append(lambda i=i: i*i) 相当于 fs.append(lambda j=i: j*j)(lambda i=i: i*i)中的第一个 i 是lambda自己声明的局部变量 , 会屏蔽掉外部的 i 变量值。第二个问题:fs.append(lambda a=i: i*i) 相当于 fs.append(lambda : i*i)(lambda a=i: i*i) 中的 i是引用外部变量 ,所以会发生变化,闭包要求不是不能引用外部会发生变化的变量么第...
2015-10-11
已采纳回答 / 轮回无极限
因为filter()是让函数依次作用于列表中的元素,根据函数来判断是否留下该元素,所以你在函数中希望返回值是x的平方并没有什么用,它还是原来列表中的元素。而且这也不该是做题的顺序啊,你倒是先想出了答案在往上套它的平方了。可以把is_sqr函数中的语句改成return math.sqrt(x) % 1 == 0
2015-10-05
已采纳回答 / PengCheng
先看看有理数的定义:在数学上,有理数是一个整数a和一个非零整数b的比,例如3/8,通则为a/b,故又称作分数。0也是有理数,也是整数。有理数是整数和分数的集合,整数亦可看做是分母为一的分数。你贴的Rational(self.p * r.q + self.q * r.p, self.q * r.q)代码是 class Rational(object)里的 __add__方法 用下面这个例子来解释r1 = Rational(1, 3)r2 = Rational(1, 2)print r1+r2首先r1 ...
2015-10-01
最赞回答 / bear_0008
@log 是Python特有的一种函数简写方式,相当于factorial=log(factorial),将factorial()函数作为log函数的参数进行调用
2015-09-21
已采纳回答 / Max_Geek
f1,f2,f3只是三个变量,你愿意改为 a,b,c 然后打印a() b() c()也可以,三个变量接收count()返回的一个tuple这是我理解
2015-09-21