前段时间看到一篇 Flask 开发团队内部 Python 编码风格指南 ,里面有一段关于比较的规范:html
==
和 !=
is
和 is not
True
或 False
进行比较(例如,不要这样写:foo == False
,而应该这样写:not foo
)本身在写代码的时候不多去关注变量的比较要如何实现,基本都是直接使用 ==
。今天就借此机会聊聊 Python 中的比较运算符。python
==
和 !=
是等值校验。编程
这两个运算符是咱们最熟悉不过的比较运算符了。==
会根据魔术方法 __eq__
检测左右两侧对象的值是否相等。设计模式
例如 x == y
,其实背后的操做是 x.__eq__(y)
。bash
is
是身份校验。它将检测左右两侧是否为同一个对象。ide
同一个对象必须知足:ui
所以就不难理解为何 is
和 is not
用于单例(singletons)比较了。编码
单例是一种设计模式,应用该模式的类只会生成一个实例。spa
单例模式保证了在程序的不一样位置都能够且仅能够取到同一个对象实例:.net
not
是 Python 中的逻辑判断词,经常使用于布尔型 True
和 False
。
not True -> False
not False -> True
复制代码
a = False
# not a 为 True
if not a:
pass
复制代码
a = 100
b = [1, 2, 3]
# 元素 a 是否不在列表 b 中
if a not in b:
pass
复制代码
仅对值进行简单比较时能够使用 ==
/!=
操做符:
a = 1
b = 2
if a == b:
pass
else:
pass
复制代码
is
用于比较单例,例如比较 None
:
if a is None:
pass
if a is not None:
pass
复制代码
若是涉及布尔值 True
/False
的判断,使用 not
,不要直接与 True
或 False
比较:
a = False
b = True
# 正确的写法
if not a:
pass
if b:
pass
# 错误的写法
if a == False:
pass
复制代码
not
还能够用于判断元素是否在列表/字典中存在。
若是你以为文章写得不错,请帮我两个小忙:
你的鼓励是我写做最大的动力,谢谢你们!