该系列博文原文出自jeff knupp所著的编写地道的python(writing idiomatic python)一书, 原书版权归原做者全部.
python
关于if语句
函数
避免直接与True, False或None去比较. 在python中,如下几种状况都会被当作False:
codeNone对象
False内存
数字类型的0it
空list或dictio
0值或者当__len__或__nonzero返回Falseclass
其余状况都会当作True, 你能够重写e中的两个内置函数来自定义如何才会返回True或者False.变量
你能够直接这样写 if foo: 而不用这样写 if foo == True:重构
这样写的好处在于通过将来的重构以后, foo可能变成了一个int类型的值并且永远不会 == True, 直接写 if foo: 就不用再修改原先的函数了.
这里有个点要注意区分一下,就是==和is的区别, ==意思是值是否相等,它调用的是类内部的_eq, is意思是他们是不是同一个对象,即两个变量是否指向的是同一段内存, 有些地方is表现的像==同样,可是这是不可靠的.
注意有些状况是必须与None去比较的,好比
def insert_data(self, position=None): if position is None:
此处因为0也是一个有效值因此不能直接写 if position:
还有一种状况是若是与None去比较必须使用is或者is not,不要用==. (PEP8规定)