print filter(lambda s:s and len(s.strip()) > 0, ['test', None, '', 'str', ' ', 'END'])
2015-03-11
函数式只是一种编程的paradigm, 既然是paradigm,只是一种思想,老师不能给学生一种用c就不能函数式编程的错误概念,实际上c,c++都能很好的支持函数式编程,函数式编程也不是只有支持闭包的语言才能支持,c语言的指针和函数指针一样能够很好的完成变量是函数的概念,所以不要轻易的跟c做对比,贬低c,这是不妥的,而且python语言并不认为函数式编程是它重要的一个特点,只是我们有函数,函数作为参数,变量保存函数和闭包这些概念而已。
2015-03-10
讲师回答 / 廖雪峰
如果你定义了一个函数: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
最赞回答 / Perona
python中,函数(方法)并不是依附与类才能存在。函数并不只是在类中定义。这种直接在模块中而不是类中定义的函数(方法),叫做函数。而 方法(method),是依附于类 的,他们定义在类中,是属于类的,但是他们本质上,还是一个函数。方法的第一个参数不一定必须是self。这么说吧,凡是def foo()这种,都是函数,在类中定义的函数,就是方法。总结:方法:类内普通方法,类方法函数:普通函数,类内的静态方法
2015-03-08