最新回答 / spider18
<...code...>这里并没有运行到 闭包,会直接运行处结果,f1,f2,f3 得到的就是整数,所以就不能调用了 print f1(), f2(), f3(),
2015-10-30
最新回答 / 慕少852478
那太多了,就是便利做一个你想要做的事,把这个事简单化。比如,有小红,小黄,小绿三个人,你要一个人去买糖,只要在类中定义《去买糖》。告诉方法谁去执行就可以了。模块化可多次重复利用代码,简洁界面。我猜你是被函数和方法弄蒙了吧,其实这两个本质上是一个东西。都可以叫方法或者函数,高级语言中区分没有返回值的叫构造函数,一般创建对象执行(等同于python中过的__init__函数)。其余需要应用的函数(def),就叫方法。弱语言中,一般都统称函数。python中的类方法(绑定@classmethod),类属性(类内...
2015-10-28
最赞回答 / 小二百
因为__score是私有属性,外部不能直接访问,也不能直接赋值,但是score可以直接外部访问或者赋值,这里使用__score应该是为了体现@property的作用吧
2015-10-28
最赞回答 / 慕田峪6184375
python中的reduce内建函数是一个二元操作函数,他用来将一个数据集合(链表,元组等)中的所有数据进行下列操作:reduce(func,(1,2,3,4,5)) (func()必须是一个二元操作函数)func先对集合中的第1,2个数据进行操作,得到的结果再与第三个数据用func()函数运算,最后得到一个结果。
2015-10-26
最赞回答 / 不会换气的鱼
我自己的理解:1.以上面的log函数为例,log内部定义了fn函数,fn.__name__ 为 'fn'<...code...>当执行了f = log(f),因为log函数返回的也是一个函数(fn),所以f实际指向的函数(fn),f.__name__ 为 'fn...
2015-10-25
最赞回答 / 小明在努力
不知道同学现在懂了没 应该是这样的def log(f): def fn(x): print 'call ' + f.__name__ + '()...' return f(x) return fn //这个时候的log是一个返回fn函数的函数从上面的代码看 log就是指向fn函数的 要执行fn函数 就使用log()从f = log(f) 来看 log是一个函数名 所以log是指向fn函数的函数 只是上面的log没有参数给fn函数传参数 就是用l...
2015-10-24
最赞回答 / 子木李
在Python,有两种属性,类属性和实例属性,类属性相当于类的静态方法(类比于Java),实例属性是每个实例单独的属性,楼主所说的用Person.count,这里调用的就是类属性,self.count调用的是实例属性,当在_init_中调用的是self时,然后打印的时候调用的是Person.count,那么count肯定是它的初始值0了,因为它没有改变,用self.count,改变的只是实例的属性,并没有改变类属性,所以打印出三个0了,如果楼主把print那个部分的Person换成p1,p2,p3的时候,...
2015-10-23
最赞回答 / 解剖器
sorted默认是sorted([4,6,8,2等等],cmp)cmp是里面介绍的输出-1、1或者0,sorted函数通过cmp的返回值来判断比较的两个数的前后顺序。相当于是cmp为sorted提供对比的标准,sorted按照那个标准来排序。sorted函数只认识cmp返回的1、-1和0,并且按照上面介绍的规则来排序。至于从大到小还是从小到大完全取决于cmp的定义。sorted的排序算法是python设计好的,我们并不需要知道。如果你接触过其它的语言,在设计到排序时会接触一些排序的算法,那些算法有好有坏,...
2015-10-21
最赞回答 / 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