迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Python >

如何在 Python 中将值与 None 进行比较

作者:迹忆客 最近更新:2022/10/19 浏览次数:

在 Python 中使用 is 运算符与 None 进行比较,例如 if my_var is None:。 如果两个值指向同一个对象,is 运算符返回 True(它检查身份),而 double 等于 == 运算符检查两个值是否相等。

my_var = None

if my_var is None:
    # 👇️ this runs
    print('variable stores None')
else:
    print('variable does NOT store None')

python 中将值与 None 进行比较

当我们需要检查对象的身份时,您应该使用 is 运算符。

pep 8 风格指南提到,与 None 之类的单例比较应该始终使用 isnot,而不是相等运算符。

当我们需要检查一个值是否等于另一个值时,请使用相等运算符(等于 == 而不是等于 !=),例如 'hi' == 'hi'

使用 is 时,我们检查值是否是相同的对象(内存中的相同位置),而不是它们是否相等。

这是一个更好地说明检查身份(is)与检查相等性(==)的示例。

my_first_list = ['a', 'b', 'c']

my_second_list = my_first_list # 👈️ same list as above

print(my_first_list is my_second_list)  # 👉️ True

print(my_first_list == my_second_list)  # 👉️ True

我们声明了 2 个存储相同列表的变量。

我们将第二个变量设置为第一个,因此两个变量都指向内存中的同一个列表对象。

现在,让我们创建列表的浅表副本并将其分配给第二个变量。

my_first_list = ['a', 'b', 'c']

my_second_list = my_first_list.copy() # 👈️ copy created

print(my_first_list is my_second_list)  # 👉️ False

print(my_first_list == my_second_list)  # 👉️ True

请注意 ,身份检查失败。 即使这两个列表以相同的顺序存储相同的值,它们指向内存中的不同位置(它们不是同一个对象)。

当我们使用双等号运算符时,Python 会在对象上调用 __eq__() 方法。

x==y 调用 x.__eq__(y)。 理论上,这种方法可以以一种不可预知的方式实现,所以用 is 操作符比较 None 更直接。

我们可以使用 id() 函数来获取对象的标识。

my_first_list = ['a', 'b', 'c']
print(id(my_first_list))  # 👉️ 139944523741504

my_second_list = my_first_list.copy()
print(id(my_second_list))  # 👉️ 139944522293184

print(id(my_first_list) == id(my_second_list))  # 👉️ False

该函数返回一个整数,该整数保证在对象的生命周期内是唯一且恒定的。

id() 函数返回对象在 CPython 内存中的地址。

如果两个变量引用同一个对象,则 id() 函数将产生相同的结果。

my_first_list = ['a', 'b', 'c']
print(id(my_first_list))  # 👉️ 140311440685376

my_second_list = my_first_list
print(id(my_second_list))  # 👉️ 140311440685376

print(id(my_first_list) == id(my_second_list))  # 👉️ True

将 None 值传递给 id() 函数总是会返回相同的结果,因为在 Python 程序中只有一个 None 实例。

print(id(None))  # 👉️ 9817984

print(id(None))  # 👉️ 9817984

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

Python for 循环中的下一项

发布时间:2023/04/26 浏览次数:179 分类:Python

本文讨论了 Python 中的 for 循环以及如何通过使用 for 循环和示例来跳过列表的第一个元素。

Python While 循环用户输入

发布时间:2023/04/26 浏览次数:148 分类:Python

我们可以在 while 循环中使用 input() 函数来输入数据,直到在 Python 中满足某个条件。

Python 中的整数规划

发布时间:2023/04/26 浏览次数:193 分类:Python

本文介绍了整数规划和可用于解决混合整数规划问题的 Python 工具。

在 Python 中将整数转换为罗马数字

发布时间:2023/04/26 浏览次数:87 分类:Python

本篇文章将介绍在 Python 中将整数转换为罗马数字。以下是一个 Python 程序的实现,它将给定的整数转换为其等效的罗马数字。

在 Python 中将罗马数字转换为整数

发布时间:2023/04/26 浏览次数:144 分类:Python

本文讨论如何在 Python 中将罗马数字转换为整数。 我们将使用 Python if 语句来执行此操作。 我们还将探讨在 Python 中将罗马数字更改为整数的更多方法。

在 Python 中读取 gzip 文件

发布时间:2023/04/26 浏览次数:70 分类:Python

本篇文章强调了压缩文件的重要性,并演示了如何在 Python 中使用 gzip 进行压缩和解压缩。

在 Python 中锁定文件

发布时间:2023/04/26 浏览次数:141 分类:Python

本文解释了为什么在 Python 中锁定文件很重要。 这讨论了当两个进程在没有锁的情况下与共享资源交互时会发生什么的示例,为什么在放置锁之前知道文件状态很重要,等等

在 Python 中将 PDF 转换为文本

发布时间:2023/04/26 浏览次数:196 分类:Python

在本教程中,我们将学习如何使用 Python 使用 PyPDF2、Aspose 和 PDFminer 将 PDF 文档转换为文本文件。

在 Python 中创建临时文件

发布时间:2023/04/26 浏览次数:53 分类:Python

本文讲解了tempfile库函数的四个子函数:TemporaryFile、NamedTemporaryFile、mkstemp、TemporaryDirectory。 每个部分都提供了适当的程序,以简化对概念的理解。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便