Python中is和==(is not和!=)的区别

2023-11-04

Python中有很多种运算符,本文主要记录一下is和==这两种运算符的区别:

id()函数是查看该对象所在内存地址。每个对象都有对应的内存地址,如:

is 用于判断两个变量引用对象是否为同一个, == 用于判断引用变量的值是否相等。类似于Java中的equal()和==。反之,is not 用于判断两个变量是否引用自不同的对象,而 != 用于判断引用变量的值是否不等。

下面来几个具体的例子:

整数的比较:
x = 5
y = 5
print(x == y)
print(x is y)
print(id(x))
print(id(y))

执行结果:
True
True
1543817008
1543817008

字符串的比较:
x = “abc”
y = “abc”
print(x == y)
print(x is y)
print(id(x))
print(id(y))

执行结果:
True
True
2039623802136
2039623802136

list(列表)的比较:
x = [1, 2, 3]
y = [1, 2, 3]
print(x == y)
print(x is y)
print(id(x))
print(id(y))

执行结果:
True
False
2194144817928
2194144817288

tuple(元组)的比较:
x = (1, 2, 3)
y = (1, 2, 3)
print(x == y)
print(x is y)
print(id(x))
print(id(y))

执行结果:
True
False
2699216284336
2699216284480

dict(字典)的比较:
x = {“id”: 1, “name”: “Tom”, “age”: 18}
y = {“id”: 1, “name”: “Tom”, “age”: 18}
print(x == y)
print(x is y)
print(id(x))
print(id(y))

执行结果:
True
False
3005783112296
3005783112368

set(集合)的比较:
x = set([1, 2, 3])
y = set([1, 2, 3])
print(x == y)
print(x is y)
print(id(x))
print(id(y))

执行结果:
True
False
2206005855176
2206006414696

赋值后比较(符合所有数据类型),以list为例:
x = [1, 2, 3]
y = x
print(x == y)
print(x is y)
print(id(x))
print(id(y))

执行结果:
True
True
2539215778568
2539215778568

总结
在上面的例子中,我们分别打印了两种运算符的比较结果和内存地址,所以可以得出:

只要各对象的值一样,则 x == y 的值一定为True;
如果对象的类型为整数或字符串且值一样,则 x == y和 x is y 的值为True。(经测试浮点型数值,只有正浮点数符合这条规律,负浮点数不符合);
list,tuple,dict,set值一样的话,x is y 则为False;
x == y 与 x != y 的值相反,x is y 与 x is not y 的值相反。
以上结论只针对对变量直接赋值或变量相互赋值后的比较,不针对两个变量之间拷贝后在进行比较。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python中is和==(is not和!=)的区别 的相关文章

  • 如何查看Databricks中的所有数据库和表

    我想列出 Azure Databricks 中每个数据库中的所有表 所以我希望输出看起来像这样 Database Table name Database1 Table 1 Database1 Table 2 Database1 Table
  • Python 的键盘中断不会中止 Rust 函数 (PyO3)

    我有一个使用 PyO3 用 Rust 编写的 Python 库 它涉及一些昂贵的计算 单个函数调用最多需要 10 分钟 从 Python 调用时如何中止执行 Ctrl C 好像只有执行结束后才会处理 所以本质上没什么用 最小可重现示例 Ca
  • 将 saxon 与 python 结合使用

    我需要使用 python 处理 XSLT 目前我正在使用仅支持 XSLT 1 的 lxml 现在我需要处理 XSLT 2 有没有办法将 saxon XSLT 处理器与 python 一起使用 有两种可能的方法 设置一个 HTTP 服务 接受
  • 将数据从 python pandas 数据框导出或写入 MS Access 表

    我正在尝试将数据从 python pandas 数据框导出到现有的 MS Access 表 我想用已更新的数据替换 MS Access 表 在 python 中 我尝试使用 pandas to sql 但收到错误消息 我觉得很奇怪 使用 p
  • 将 Matplotlib 误差线放置在不位于条形中心的位置

    我正在 Matplotlib 中生成带有错误栏的堆积条形图 不幸的是 某些层相对较小且数据多样 因此多个层的错误条可能重叠 从而使它们难以或无法读取 Example 有没有办法设置每个误差条的位置 即沿 x 轴移动它 以便重叠的线显示在彼此
  • 使 django 服务器可以在 LAN 中访问

    我已经安装了Django服务器 可以如下访问 http localhost 8000 get sms http 127 0 0 1 8000 get sms 假设我的IP是x x x x 当我这样做时 从同一网络下的另一台电脑 my ip
  • 使用 matplotlib 绘制时间序列数据并仅在年初显示年份

    rcParams date autoformatter month b n Y 我正在使用 matpltolib 来绘制时间序列 如果我按上述方式设置 rcParams 则生成的图会在每个刻度处标记月份名称和年份 我怎样才能将其设置为仅在每
  • Flask 会话变量

    我正在用 Flask 编写一个小型网络应用程序 当两个用户 在同一网络下 尝试使用应用程序时 我遇到会话变量问题 这是代码 import os from flask import Flask request render template
  • 使用 on_bad_lines 将 pandas.read_csv 中的无效行写入文件

    我有一个 CSV 文件 我正在使用 Python 来解析该文件 我发现文件中的某些行具有不同的列数 001 Snow Jon 19801201 002 Crom Jake 19920103 003 Wise Frank 19880303 l
  • 使用 Tkinter 显示 numpy 数组中的图像

    我对 Python 缺乏经验 第一次使用 Tkinter 制作一个 UI 显示我的数字分类程序与 mnist 数据集的结果 当图像来自 numpy 数组而不是我的 PC 上的文件路径时 我有一个关于在 Tkinter 中显示图像的问题 我为
  • 从 Flask 访问 Heroku 变量

    我已经使用以下命令在 Heroku 配置中设置了数据库变量 heroku config add server xxx xxx xxx xxx heroku config add user userName heroku config add
  • BeautifulSoup 中的嵌套标签 - Python

    我在网站和 stackoverflow 上查看了许多示例 但找不到解决我的问题的通用解决方案 我正在处理一个非常混乱的网站 我想抓取一些数据 标记看起来像这样 table tbody tr tr tr td td td table tr t
  • 添加不同形状的 numpy 数组

    我想添加两个不同形状的 numpy 数组 但不进行广播 而是将 缺失 值视为零 可能最简单的例子是 1 2 3 2 gt 3 2 3 or 1 2 3 2 1 gt 3 2 3 1 0 0 我事先不知道形状 我正在弄乱每个 np shape
  • 无法在 Python 3 中导入 cProfile

    我试图将 cProfile 模块导入 Python 3 3 0 但出现以下错误 Traceback most recent call last File
  • 如何在seaborn displot中使用hist_kws

    我想在同一图中用不同的颜色绘制直方图和 kde 线 我想为直方图设置绿色 为 kde 线设置蓝色 我设法弄清楚使用 line kws 来更改 kde 线条颜色 但 hist kws 不适用于显示 我尝试过使用 histplot 但我无法为
  • Python:如何将列表列表的元素转换为无向图?

    我有一个程序 可以检索 PubMed 出版物列表 并希望构建一个共同作者图 这意味着对于每篇文章 我想将每个作者 如果尚未存在 添加为顶点 并添加无向边 或增加每个合著者之间的权重 我设法编写了第一个程序 该程序检索每个出版物的作者列表 并
  • 使用其构造函数初始化 OrderedDict 以便保留初始数据的顺序的正确方法?

    初始化有序字典 OD 以使其保留初始数据的顺序的正确方法是什么 from collections import OrderedDict Obviously wrong because regular dict loses order d O
  • 使用 Python 的 matplotlib 选择在屏幕上显示哪些图形以及将哪些图形保存到文件中

    我想用Python创建不同的图形matplotlib pyplot 然后 我想将其中一些保存到文件中 而另一些则应使用show 命令 然而 show 显示all创建的数字 我可以通过调用来避免这种情况close 创建我不想在屏幕上显示的绘图
  • 从列表指向字典变量

    假设你有一个清单 a 3 4 1 我想用这些信息来指向字典 b 3 4 1 现在 我需要的是一个常规 看到该值后 在 b 的位置内读写一个值 我不喜欢复制变量 我想直接改变变量b的内容 假设b是一个嵌套字典 你可以这样做 reduce di
  • Python Selenium:如何在文本文件中打印网站上的值?

    我正在尝试编写一个脚本 该脚本将从 tulsaspca org 网站获取以下 6 个值并将其打印在 txt 文件中 最终输出应该是 905 4896 7105 23194 1004 42000 放置的动物 的 HTML span class

随机推荐

  • Java中整型数据的进制书写

    问题描述 我觉得这是一个比较有趣的事情 我觉得大多数初学者在编程过程中都不会在源代码里用除了十进制的其它进制写常量 但是当我在做leetcode的 回文数字 一题时 写了个测试样例 以为int 0343可以被识别为343 从而被识别成回文数
  • combo 添加listeners,使用 initComponent、constructor 的区别

    LocationCombo Ext extend Ext form ComboBox initComponent function var config name loactionCombo hiddenName loactionCombo
  • Unity 使用Final IK实现拟真调整物体IK动画

    文章目录 IK部分 需求 何为IK 参考资料 Final IK概述 手部IK效果 IK交互 拿取与双手调整效果 演示视频 IK部分 需求 NPC拿起物体 指定转向放到指定位置 要求动作尽可能自然 贴近真实 何为IK 谈IK之前先讲一下正向运
  • 【计算机网络】数据链路层(二):差错检测和纠正

    帧同步虽然可以区分每个数据帧的起始和结束 但是还没有解决数据正确传输的两方面问题 一 如果有帧出现了错误 二 如果有帧丢失了 这都是数据链路层确保向网络层提供可靠数据传输服务解决的问题 也就是数据链路层的差错控制功能 要实现差错控制功能 就
  • 0、Spring工程构建&Spring快速入门&Spring配置文件详解&注入&Sprint相关API

    1 Spring工程构建 创建工程项目目录文件夹 IDEA选择项目new一个module 配置案例 aop创建 创建并下载完毕后 点击file选择projert 选择按照的jdk版本 output选择当前目录 点击右下方apply 选择fa
  • Android BottomNavigationView的属性设置

    底部导航栏通常是每个item由一个icon和title组成的 然后再控制下是否点击的状态即可 当然也可以使用官方在support包内提供的BottomNavigationView来实现 于简单的需求来说 使用BottomNavigation
  • FPGA数字IC刷题58道Verilog题解代码及视频讲解【FPGA探索者】【同步/异步FIFO】【跨时钟】

    牛客 Verilog 刷题入门篇1 24 进阶篇1 34 题解代码 所有代码均能通过测试 配合视频讲解效果更佳 为避免内容冗余 本文只给出代码 部分题目给出必要说明 很多题目本身出题有些问题 着重理解题目 没必要钻牛角尖 本文作者 FPGA
  • 贪心算法之活动安排问题(填表详解+思路解析)

    贪心算法 总是选择当前看起来最优的选择 局部最优解 得到的结果是一个整体最优解 但是总是选择局部最优解并不总是能得到整体最优解 需要在问题具有 贪心选择性和优化子结构时才成立 贪心选择性 第一次做出贪心选择是正确的 优化子结构 第一次做完贪
  • Tarjan 强连通分量算法的 Java 实现

    强连通分量算法是图论中的一个重要算法 用于将有向图分解为若干个强连通分量 Tarjan 算法是其中一种常用的实现方式 它可以高效地找到图中的所有强连通分量 本文将介绍 Tarjan 强连通分量算法的 Java 实现 并提供相应的源代码 首先
  • 万用表的使用

    deprecate 反对 轻视 declaration 宣告 声明书 宣布 宣告 申报 arg argue 争论 论证 争辩 主张 认为 提供证据 证明 表明 原因等 type 类型 种类 打字 成为 的典型 function 功能 作用
  • [721]linux安装kafka及命令行使用

    文章目录 一 安装kafka 二 解压kafka 三 修改server properties文件 四 修改zookeeper properties文件 五 添加kafka启动脚本 六 启动kafka 七 命令行使用kafka 创建topic
  • Vue知识系列(4)每天10个小知识点

    目录 系列文章目录 Vue知识系列 1 每天10个小知识点 Vue知识系列 2 每天10个小知识点 Vue知识系列 3 每天10个小知识点 知识点 31 Vuex 四种属性的概念 作用 使用示例 32 Vuex 和单纯的全局对象 的概念 作
  • Linux磁盘分区和文件系统的关系

    一 Linux磁盘相关命令及作用 1 df命令 用于显示文件系统的磁盘空间使用情况 2 du命令 用于查看文件或目录的磁盘使用情况 3 fdisk命令 用于磁盘分区表的创建和管理 4 mkfs命令 用于创建文件系统 5 mount命令 用于
  • 华北电力计算机专业排名,华电考研计算机专业排名

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 1354计算机软件与理论359 1355计算机软件与理论340 1356计算机软件与理论334 1357计算机软件与理论329 1358计算机软件与理论326 1359计算机软件与理论324 1
  • C++/C++11中引用的使用

    引用 reference 是一种复合类型 compound type 引用为对象起了另外一个名字 引用类型引用 refer to 另外一种类型 通过将声明符写成 d的形式来定义引用类型 其中d是声明的变量名 一 一般引用 一般在初始化变量时
  • Cocos2dx on Qt

    讨论贴在这里 http www cocos2d x org boards 6 topics 8043 page 1 准备 glew 库 bin glew32 dll gt windows system32 include GL gt VC
  • STM32F103时钟配置流程

    知识点 系统复位后 HSI振荡器被选为系统时钟 当时钟源被直接或通过PLL间接作为系统时钟时 它将不能被停止 STM32F103的三个可以作为系统时钟的时钟源 分别是HSI HSE PLL 而PLL的时钟源是HSI 2 内部RC振荡器二分频
  • 华硕计算机cpu怎么超频怎么设置,内存和CPU超频操作_华硕 ROG Rampage VI Apex_主板评测-中关村在线...

    进阶操作 进BIOS可能很多人都是为了去给CPU和内存进行超频 首先按F7进入到高级模式 华硕的主板选择Extreme Tweaker选项卡 有的主板是AI Tweaker或者超频设置等名字 Extreme Tweaker选项卡 内存超频
  • 如何使用postman做接口测试

    常用的接口测试工具主要有以下几种 Postman 简单方便的接口调试工具 便于分享和协作 具有接口调试 接口集管理 环境配置 参数化 断言 批量执行 录制接口 Mock Server 接口文档 接口监控等功能 JMeter 开源接口测试及压
  • Python中is和==(is not和!=)的区别

    Python中有很多种运算符 本文主要记录一下is和 这两种运算符的区别 id 函数是查看该对象所在内存地址 每个对象都有对应的内存地址 如 is 用于判断两个变量引用对象是否为同一个 用于判断引用变量的值是否相等 类似于Java中的equ