作者ya790206 (残云夺月)
看板Python
标题Re: [翻译] Google 建议的 Python 风格指南 14
时间Fri May 10 20:40:47 2013
Never use == or != to compare singletons like None. Use is or is not.
我这篇文章主要是要讨论这点
上面规则我认为 True 和 False 是例外。
True 和 False 虽然是个 singletons。
但是使用 == 会比 is 好。
在 True 和 False 的相等比较
会使用 == 而非 is
我要讨论的情况是 test1() == test2() 的情形
而非 test1() == True,写成这样是脱裤子放屁
基本上需要 test1() == test2() 的情形
很多都是为了检查各个状态是否一致
假设 test1 回传燃料棒是否在运作中
test2 回传的冷却系统是否在运作
我们会有这样的程式码
flag1 = test1()
flag2 = test2()
# 侦测系统是否异常的系统
# 要吗两个都有运作,要吗两个都不运作
if flag1 == flag2:
print '毫无反映,只是个核电厂'
else:
if flag1:
print '已进化成核弹'
else:
print '天气好热,开个冷气吧'
flag1 = test1() # 系统是否运作
flag2 = test2() # 冷却系统是否启动
if flag1 == flag2:
print '正常'
else:
print '异常'
为何要用 == 而非 not xor,因为 1. == 提供较可读的方式 2. not xor 需要
较多次的运算 3. 如果之後回传值改变,则 xor 会不适用。
为何使用 == 而非 is,因为 1. 如果之後回传值改变,则 is 会不适用 2. 个人觉得在
bool 比对, == 比 is 直观。
就像我之前所说的,会出现这种形式 test1() == test2()
基本上都是为了追踪各个状态是否一致,
不一致时为异常的情形。
我不知道这样的程式码算不算少见就是了
注1: 我回这篇文章只是因为有人问什麽情况下会有
test1() == test2() 的写法。
注2: 请不要和我讨论自定义物件,我的讨论只针对 True 和 False 这两个
singletons 物件。
有人总是误解我的意思 ...
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.165.75.36
※ 编辑: ya790206 来自: 118.165.75.36 (05/11 10:23)
※ 编辑: ya790206 来自: 118.165.75.36 (05/11 13:30)
※ 编辑: ya790206 来自: 118.165.75.36 (05/11 13:50)
1F:→ ya790206:我的文章是在解释为何我在2933会有那个推文 05/11 14:03