看板 Translate-CS 關於我們 聯絡資訊
※ [本文轉錄自 Python 看板 #1HYVFfnn ] 作者: ck574b027 (荒圍!定厝!賊!妹!) 看板: Python 標題: [翻譯] Google 建議的 Python 風格指南 15 時間: Wed May 8 14:42:45 2013 原文網址:http://google-styleguide.googlecode.com/svn/trunk/pyguide.html 不建議使用的python語法 呼叫string內建的方法而不是module string的方法。 # 官方文件也是如此推薦的。 words = foo.split(':') words = string.split(foo, ':') 使用呼叫函數的新語法而不是內建的apply。 # 這已經是版本2.3時代的事了。 fn(*args, **kwargs) apply(fn, args, kwargs) ''' *args表示可以傳入不定長度的參數,如 def fn(*args): print args fn(1,2,3) # print (1, 2, 3) a = [1,2,3] fn(*a) # 輸出同上 **kwargs表示傳入關鍵字參數,是個字典(dictionary),如 def fn(**kwargs): print kwargs fn(a=3,b=5) # print {'a': 3, 'b': 5} ''' 當filter和map的參數只是個單行lambda的時候,用list comprehensions取代。 [x[1] for x in my_list if x[2] == 5] map(lambda x: x[1], filter(lambda x: x[2] == 5, my_list)) map(math.sqrt, data) # Ok. 因為不需要lambda。 用for取代reduce。 (這個沒有範例,大概是reduce很容易改寫。 我的看法是沒有需要平行運算的話就少用reduce。) 釋義: 現在的版本提供大家普遍認為比較好看的語法。 結論: 我們不採用不支援這些特性的老版本,所以沒理由寫老語法。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.109.196.214
mikapauli:倒數第二個map其實可以去掉lambda變成 05/08 16:45
mikapauli:map( 05/08 16:45
mikapauli: list.__getitem__, 05/08 16:46
mikapauli: filter( 05/08 16:46
mikapauli: bool, 05/08 16:46
mikapauli: map( 05/08 16:46
mikapauli: list.__mul__, 05/08 16:47
mikapauli: my_list, 05/08 16:47
mikapauli: map( 05/08 16:48
mikapauli: (5).__eq__, 05/08 16:48
mikapauli: map( 05/08 16:49
mikapauli: list.__getitem__, 05/08 16:49
mikapauli: my_list, 05/08 16:49
mikapauli: [2] * len(my_list))))), 05/08 16:50
mikapauli: [1] * len(my_list)) 05/08 16:51
mikapauli:由於Python沒有合成函數等functional programming常用到 05/08 17:11
mikapauli:的功能,讓filter有點難使用 05/08 17:13
※ 發信站: 批踢踢實業坊(ptt.cc) ※ 轉錄者: ck574b027 (140.109.196.214), 時間: 05/10/2013 14:34:54