作者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
1F:推 mikapauli:倒数第二个map其实可以去掉lambda变成 05/08 16:45
2F:→ mikapauli:map( 05/08 16:45
3F:→ mikapauli: list.__getitem__, 05/08 16:46
4F:→ mikapauli: filter( 05/08 16:46
5F:→ mikapauli: bool, 05/08 16:46
6F:→ mikapauli: map( 05/08 16:46
7F:→ mikapauli: list.__mul__, 05/08 16:47
8F:→ mikapauli: my_list, 05/08 16:47
9F:→ mikapauli: map( 05/08 16:48
10F:→ mikapauli: (5).__eq__, 05/08 16:48
11F:→ mikapauli: map( 05/08 16:49
12F:→ mikapauli: list.__getitem__, 05/08 16:49
13F:→ mikapauli: my_list, 05/08 16:49
14F:→ mikapauli: [2] * len(my_list))))), 05/08 16:50
15F:→ mikapauli: [1] * len(my_list)) 05/08 16:51
16F:推 mikapauli:由於Python没有合成函数等functional programming常用到 05/08 17:11
17F:→ mikapauli:的功能,让filter有点难使用 05/08 17:13
※ 发信站: 批踢踢实业坊(ptt.cc)
※ 转录者: ck574b027 (140.109.196.214), 时间: 05/10/2013 14:34:54