[翻譯] Google 建議的 Python 風格指南 15

看板Python作者 (荒圍!定厝!賊!妹!)時間11年前 (2013/05/08 14:42), 編輯推噓2(2015)
留言17則, 1人參與, 最新討論串1/1
原文網址: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

05/08 16:45, , 1F
倒數第二個map其實可以去掉lambda變成
05/08 16:45, 1F

05/08 16:45, , 2F
map(
05/08 16:45, 2F

05/08 16:46, , 3F
list.__getitem__,
05/08 16:46, 3F

05/08 16:46, , 4F
filter(
05/08 16:46, 4F

05/08 16:46, , 5F
bool,
05/08 16:46, 5F

05/08 16:46, , 6F
map(
05/08 16:46, 6F

05/08 16:47, , 7F
list.__mul__,
05/08 16:47, 7F

05/08 16:47, , 8F
my_list,
05/08 16:47, 8F

05/08 16:48, , 9F
map(
05/08 16:48, 9F

05/08 16:48, , 10F
(5).__eq__,
05/08 16:48, 10F

05/08 16:49, , 11F
map(
05/08 16:49, 11F

05/08 16:49, , 12F
list.__getitem__,
05/08 16:49, 12F

05/08 16:49, , 13F
my_list,
05/08 16:49, 13F

05/08 16:50, , 14F
[2] * len(my_list))))),
05/08 16:50, 14F

05/08 16:51, , 15F
[1] * len(my_list))
05/08 16:51, 15F

05/08 17:11, , 16F
由於Python沒有合成函數等functional programming常用到
05/08 17:11, 16F

05/08 17:13, , 17F
的功能,讓filter有點難使用
05/08 17:13, 17F
文章代碼(AID): #1HYVFfnn (Python)