Fw: [翻译] Google 建议的 Python 风格指南 14

楼主: tiefblau (tiefblau)   2013-05-10 11:13:34
※ [本文转录自 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相当喜欢,平常写东西尽量多用多学而已。
也绝不是专业的译者,所以一样非常欢迎各方批评指教,谢谢。
作者: ya790206 (残云夺月)   2013-05-08 22:12:00
永远别使用== or !=来比较singletons。例外:True和False
作者: uranusjr (←這人是超級笨蛋)   2013-05-09 00:20:00
不需要有例外, 因为 1. 你可以用隐性条件式, 2. 用 is 也不会有问题
作者: ya790206 (残云夺月)   2013-05-09 21:52:00
我会说有例外因为如果 test1 和 test2 的回传值是 bool,大部分人会用 test1() == test2()。一来好理解,二来好维护。这就违背 "永远别使用== or !=来比较singletons"

Links booklink

Contact Us: admin [ a t ] ucptt.com