Python编码风格篇:比较运算符

简介: Python编码风格篇:比较运算符

前几天有看到一篇 Flask 开发团队内部 Python 编码风格指南 ,里面有一段关于比较的规范觉得很有意思:

任意类型之间的比较,使用 == 和 !=
与单例(singletons)进行比较时,使用 is 和 is not
永远不要与 True 或 False 进行比较(例如,不要这样写:foo == False,而应该这样写:not foo)
自己在写代码的时候很少去关注变量的比较要如何实现,基本都是直接使用 == 。今天就借此机会聊聊 Python 中的比较运算符。

== 与 !=

== 和 != 是等值校验。

这两个运算符是我们最熟悉不过的比较运算符了。== 会根据魔术方法 eq 检测左右两侧对象的值是否相等。

例如 x == y ,其实背后的操作是 x.__eq__(y)。

py
Python编码风格篇:比较运算符
is

is 是身份校验。它将检测左右两侧是否为同一个对象。

同一个对象必须满足:

  • 值相同
  • 内存地址相同

因此就不难理解为什么 is 和 is not 用于单例(singletons)比较了。

单例(singletons)是什么?

单例是一种设计模式,应用该模式的类只会生成一个实例。

单例模式保证了在程序的不同位置都可以且仅可以取到同一个对象实例:

如果实例不存在:会创建一个实例
如果实例已存在:会返回这个实例
not

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 还可以用于判断元素是否在列表/字典中存在。

相关文章
|
11天前
|
Python
11个提升Python列表编码效率的高级技巧
Python中关于列表的一些很酷的技巧
21 1
|
3天前
|
Python
Python基础语法:运算符详解(算术运算符、比较运算符、逻辑运算符、赋值运算符)
运算符是Python编程中的重要组成部分,理解并熟练使用这些运算符有助于编写高效、简洁的代码。本文详细介绍了算术运算符、比较运算符、逻辑运算符和赋值运算符的使用方法,并通过综合示例展示了它们在实际编程中的应用。希望通过本文的介绍,您能更好地掌握Python中的运算符。
|
5天前
|
存储 缓存 Python
python中小数据池和编码
python中小数据池和编码
16 3
|
17天前
|
缓存 Java Unix
python中内存管理等10个编码习惯
【7月更文挑战第3天】本文涵盖了Python编程中的变量管理、模块导入、命令行参数、内存管理和面向对象设计的10个关键概念。
24 0
python中内存管理等10个编码习惯
|
23天前
|
Python
Python赋值运算符
【6月更文挑战第27天】Python赋值运算符。
17 6
|
23天前
|
Python
Python比较运算符
【6月更文挑战第27天】Python比较运算符。
11 4
|
1月前
|
自然语言处理 Python
Python编码问题
Python编码问题是指在处理文本时,由于编码不一致导致程序不能正确处理文本的问题。在Python中,编码问题主要有两种情况:文件编码问题和字符串编码问题。
30 7
|
12天前
|
数据处理 开发者 Python
别再盲目编码!一文读懂Python线程与进程的使用场景与限制,助你成为并发编程高手!
【7月更文挑战第8天】Python并发编程提升效率,关键在于理解线程和进程的适用场景。I/O密集型任务如Web服务器适合用线程,示例展示了使用`threading`处理HTTP请求。CPU密集型任务则利用`multiprocessing`创建进程,绕过GIL限制,实现多核利用。注意线程的GIL限制和进程的开销,选择合适模型以优化并发性能。
14 0
|
1月前
|
Python IDE 开发工具
【Python贪吃蛇】:编码技巧与游戏设计的完美结合
【Python贪吃蛇】:编码技巧与游戏设计的完美结合
|
17天前
|
语音技术 数据安全/隐私保护 Python
语音识别---数据输入(input语句),布尔类型和比较运算符,if语句的基本格式,Python通过空格缩进来判断代码块的归属关系,我要买票吗讲解?if_elif_else
语音识别---数据输入(input语句),布尔类型和比较运算符,if语句的基本格式,Python通过空格缩进来判断代码块的归属关系,我要买票吗讲解?if_elif_else