作者ck574b027 (荒圍!定厝!賊!妹!)
看板Translate-CS
標題Fw: [翻譯] Google 建議的 Python 風格指南 15
時間Fri May 10 14:34:54 2013
※ [本文轉錄自 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