作者tiefblau (tiefblau)
看板Translate-CS
标题Fw: [翻译] Google 建议的 Python 风格指南 14
时间Fri May 10 11:13:34 2013
※ [本文转录自 Python 看板 #1HYKF-aQ ]
作者: tiefblau (tiefblau) 看板: Python
标题: [翻译] Google 建议的 Python 风格指南 14
时间: Wed May 8 02:12:12 2013
原文网址:
http://google-styleguide.googlecode.com/svn/trunk/pyguide.html
* True/False evaluations
尽可能使用隐含的False值。
释义:
布林判断时,Python会将一些变数值视为false,一个快速的经验法则:所有"空"的值都视
为false,所以→
0,None,[],{},'' 都会被判断为false。
优点:
使用时较易阅读、不容易出错;大部分情况下也会跑比较快。
缺点:
对於C/C++开发者而言,可能看起来很怪。
决策:
尽可能地使用 e.g.使用
if foo: 而非
if foo != []:
但也要随时注意下列警告。
1.永远别使用
== or
!= 来比较singletons(如
None)。使用
is 或是
is not。
2.当你真正意思是
if x is not None: 时,要特别小心写
if x: 可能出问题
e.g,当测试一个预设为
None 的变数是否有被给予其他值时,它的新值有可能在布林判
断中刚好为false。
3.使用
if not x:,而不要使用
== 比较
x 与
False,
如果你要分辨
False 与
None 两者,请链结地使用两个表达式
e.g.
if not x and x is not None:
4.对於序列(strings, lists, tuples),尽量使用"空白序列"为false这个特点
yes:
if not seq: or
if seq:
no:
if len(seq): or
if not len(seq):
5.处理整数时,与益处相比,使用隐含的false值反而可能牵涉更多坏处。
(i.e.意外地将None视为0)
但是可以比较已确知为整数且不为
len()之结果的变数与 0。
Yes:
if not users:
print 'no users'
if foo == 0:
self.handle_zero()
if i % 10 == 0:
self.handle_multiple_of_ten()
No:
if len(users) == 0:
print 'no users'
if foo is not None and not foo:
self.handle_zero()
if not i % 10:
self.handle_multiple_of_ten()
6.注意一点,
'0' (内容为数字0的字串)是true喔。
===
上一篇s大真是辛苦了,下午偷瞄了一下那个份量有点却步阿~
叫我t大绝不敢当,只是用了一阵子Python相当喜欢,平常写东西尽量多用多学而已。
也绝不是专业的译者,所以一样非常欢迎各方批评指教,谢谢。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.249.227
※ 编辑: tiefblau 来自: 140.112.249.227 (05/08 02:14)
1F:推 ya790206:永远别使用== or !=来比较singletons。例外:True和False 05/08 22:12
2F:→ uranusjr:不需要有例外, 因为 1. 你可以用隐性条件式, 2. 用 is 也 05/09 00:20
3F:→ uranusjr:不会有问题 05/09 00:20
4F:→ ya790206:我会说有例外因为如果 test1 和 test2 的回传值是 bool, 05/09 21:52
5F:→ ya790206:大部分人会用 test1() == test2()。一来好理解,二来好 05/09 21:53
6F:→ ya790206:维护。 05/09 21:53
7F:→ ya790206:这就违背 "永远别使用== or !=来比较singletons" 05/09 21:54
※ 发信站: 批踢踢实业坊(ptt.cc)
※ 转录者: tiefblau (140.112.30.143), 时间: 05/10/2013 11:13:34