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