已采纳回答 / nanwenguang
filter( fun() , list ) 中第一个是判断函数,如果你想要过滤掉返回值为false的,改变fun()的内部逻辑就可以了例如: a= [1,2,3,4]print filter(lambda x:x<3,a) 你想不想保留小于3的 那就lambda x:x>=3咯你的意思肯定是想在不改变fun()内部逻辑的前提下 筛掉false的内容,我也是才学python,不是很了解。不过我觉得应该是不可能吧,毕竟filter是一个写好了的函数
2016-10-11
已采纳回答 / nanwenguang
return sorted([s1.upper(),s2.upper()]) ,返回的是一个list但是sorted(list,int)函数后面这个参数需要接受的是一个int型的值所以这么写不对 ,而写成 return cmp(s1.upper(),s2.upper()) 这样返回的就是一个int型的值了
2016-10-10
已采纳回答 / fengchidianche
Python的内存管理采用自动回收机制,你例子中的a, b, L, i均为局部变量,在所属的function执行完毕后被自动回收,因此别的function不可能访问到已经被回收的变量。而self.v1则不同,它是属于对象'self'的属性,只要对象存在,则属性就存在并共享
2016-10-09
最赞回答 / 浮丶躁
应该是先calc_sum() 返回的 是 lazy_sum函数 (类似于java中的指向地址) 当calc 调用这个指向才调用 lazy_sum 所以才会有执行的结果是 9 9 9 的错误
2016-10-09
已采纳回答 / fengchidianche
这是Python内部机制name mangling 技术做的事情。具体表现是__specialname形式的任何标识符(前面至少两个下划线,后面至多一个下划线)会被自动替换为_classname__specialname,其中classname就是类名。这也就是你直接访问__specialname时无法访问到的原因啦,是不是很可爱在你指出的例子中,你可以用以下代码自行验证一下,希望能帮到你<...code...>
2016-10-08
已采纳回答 / 打代码的科比
可以看成是a=b,b=a+b一开始是a=0,b=1。然后把a=0放进L之后,就把a设为当前b的值1,b就等于当前a的值(0)和当前b的值(1)之和1这个步骤是同时进行的,所以修改a的值,并不影响同一行修改b的值
2016-10-07