讲师回答 / 廖雪峰
如果你定义了一个函数:bar(self, a, b, c)你可以直接调用,注意self参数也要传:bar(obj, 1, 2, 3)如果你把bar函数绑定到对象,你可以在对象上调用:foo.bar(1, 2, 3)注意self参数不能传也不让你传,由解释器自动传入foo对象可以直接在class中定义方法,这样每个实例自动绑定了该方法也可以在运行期给实例绑定方法,两种方式都是等价的,因为python解释器只不过把class的定义翻译成“给实例绑定方法”的代码
2015-03-08
已采纳回答 / 廖雪峰
__future__是基于:你现在的代码在低版本上跑着,不是说升就能升到高版本的,因为没有测试但是高版本有个特性你很想用,于是可以在低版本用__future__测试,测得好,将来升级到高版本风险低发新版本时都有release note,让你知道新功能。一个新功能比如打算发布到2.9版本,那在2.8版本中就会存在,只是以__future__方式存在,目的就是让旧代码有机会充分测试
2015-03-08
讲师回答 / 廖雪峰
因为函数调用允许传入关键字参数:>>> def fn(*args):... pass... >>> fn(1, 2, 3) # OK>>> fn(1, 2, 3, last=4)Traceback (most recent call last): File "<stdin>", line 1, in <module>TypeError: fn() got an unexpected keyword argument '...
2015-03-06
已采纳回答 / rose0803
%是格式化的意思,%s是格式化字符串,%f是格式化浮点数,这句话的意思是把f.__name__插入到了%s这个位置,(t2-t1)计算后的值插入到了%f这个位置
2015-03-06