【自学Python】Python比较运算符is和==区别

news2025/2/28 13:31:19

Python比较运算符is和==区别

Python比较运算符is和==区别教程

Python 中,比较运算符 is 和 is not 用于比较两个对象是否是同一个对象,== 和 != 用于比较两个 变量 的数据是否相等。

案例

比较数值型

数值型,使用 is 和 == 效果相同

print("嗨客网(www.haicoder.net)")

# 数值型,使用 is 和 == 效果相同
num1 = 1024
num2 = 1024

a = num1 == num2
b = num1 is num2
c = num1 != num2
d = num1 is not num2
print('a =', a, 'b =', b, 'c =', c, 'd =', d)

程序运行后,控制台输出如下:

请添加图片描述

我们首先定义了两个 变量,使用赋值运算符分别赋初值为 1024 和 1024。

接着我们将变量 a 的值赋值为 num1 == num2 的比较结果,变量 b 的值赋值为 num1 is num2 的比较结果,变量 c 的值赋值为 num1 != num2 的比较结果,变量 d 的值赋值为 num1 is not num2 的比较结果。

我们可以看到,虽然 num1 和 num2 是两个不同的变量,但因为它们的值相等,所以 num1 == num2 和 num1 is num2 的结果都是 True

最后,我们使用 print() 函数,打印出这四个比较结果的值。

比较字符串型

字符串类型,使用 is 和 == 效果相同

print("嗨客网(www.haicoder.net)")

# 字符串类型,使用 is 和 == 效果相同
str1 = "HaiCoder"
str2 = "HaiCoder"
str3 = "Haicoder"

a = str1 == str2
b = str1 is str2
c = str1 != str3
d = str1 is not str3
print('a =', a, 'b =', b, 'c =', c, 'd =', d)

程序运行后,控制台输出如下:

请添加图片描述

我们首先定义了三个变量,使用赋值运算符分别赋初值为 “HaiCoder”、“HaiCoder” 和 “Haicoder”。

接着我们将变量 a 的值赋值为 str1 == str2 的比较结果,变量 b 的值赋值为 str1 is str2 的比较结果,变量 c 的值赋值为 str1 != str3 的比较结果,变量 d 的值赋值为 str1 is not str3 的比较结果。

我们可以看到,虽然 str1 和 str2 是两个不同的变量,但因为它们的值相等,所以 str1 == str2 和 str1 is str2 的结果都是 True。

最后,我们使用 print() 函数,打印出这四个比较结果的值。

比较元祖类型

元祖类型,使用 is 和 == 效果相同

print("嗨客网(www.haicoder.net)")

# 元祖类型,使用 is 和 == 效果相同
tup1 = ('H', 'a', 'i', 'C', 'o', 'd', 'e', 'r')
tup2 = ('H', 'a', 'i', 'C', 'o', 'd', 'e', 'r')

a = tup1 == tup2
b = tup1 is tup2
c = tup1 != tup2
d = tup1 is not tup2
print('a =', a, 'b =', b, 'c =', c, 'd =', d)
print('&tup1 =', id(tup1), '&b =', id(tup2))

程序运行后,控制台输出如下:

请添加图片描述

我们首先定义了两个元祖类型的变量,使用赋值运算符分别赋初值为 “HaiCoder” 和 “HaiCoder”。

接着我们将变量 a 的值赋值为 tup1 == tup2 的比较结果,变量 b 的值赋值为 tup1 is tup2 的比较结果,变量 c 的值赋值为 tup1 != tup2 的比较结果,变量 d 的值赋值为 tup1 is not tup2 的比较结果。

我们可以看到,虽然 tup1 和 tup2 是两个不同的变量,但因为它们的值相等,所以 tup1 == tup2 和 tup1 is tup2 的结果都是 True。

同时,我们通过 id() 函数,打印了变量 tup1 和 变量 tup2 的地址,发现它们的地址是相同的,这才是 is 运算符判断 True 和 False 的核心。

最后,我们使用 print() 函数,打印出这四个比较结果的值。

比较列表类型

当变量的地址不同时,is 运算符返回 False。

print("嗨客网(www.haicoder.net)")

# 列表类型,使用 is 和 == 效果不同
lis1 = ['H', 'a', 'i', 'C', 'o', 'd', 'e', 'r']
lis2 = ['H', 'a', 'i', 'C', 'o', 'd', 'e', 'r']

a = lis1 == lis1
b = lis1 is lis2
print('a =', a, 'b =', b)
print('&lis1 =', id(lis1), '&b =', id(lis2))

程序运行后,控制台输出如下:

请添加图片描述

我们首先定义了两个 列表类型 的变量,使用赋值运算符分别赋初值为 “HaiCoder” 和 “HaiCoder”。接着我们将变量 a 的值赋值为 lis1 == lis2 的比较结果,变量 b 的值赋值为 lis1 is lis2 的比较结果。

我们可以看到,虽然 lis1 和 lis2 它们的值相等,但它们是两个不同的变量,所以 tup1 == tup2 的结果为 True,但 tup1 is tup2 的结果为 False。

我们通过 id() 函数,打印了变量 lis1 和 变量 lis2 的地址,发现它们的地址是不同的,这才是 is 运算符返回 False 的原因。

Python比较运算符is和==区别总结

在 Python 中,比较运算符 is 和 is not 用于比较两个对象是否是同一个对象,== 和 != 用于比较两个变量的数组是否相等。

如果两个变量的地址相同,那么 is 运算符会返回 True,否则,is 运算符返回 False。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/161409.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Word控件Spire.Doc 【Table】教程(5):创建表格并在 Doc 文档中设置其边框

Spire.Doc for .NET是一款专门对 Word 文档进行操作的 .NET 类库。在于帮助开发人员无需安装 Microsoft Word情况下,轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档。拥有近10年专业开发经验Spire系列办公文档开发工具,专注于创建、编辑、转…

ROS2机器人编程简述新书推荐-A Concise Introduction to Robot Programming with ROS2

参考链接:https://github.com/fmrico/book_ros2封面:简介:ROS2机器人编程简明教程使用ROS2进行机器人编程的简明介绍为读者提供了通过编程实现机器人所需的概念和工具。它将使读者具备使用ROS2(ROS的新版本)进行项目所…

RT-Thread系列--内存堆MEMHEAP源码分析

一、目的在上一篇《RT-Thread系列--内存池MEMPOOL源码分析》我们介绍了RT-Thread的内存池MEMPOOL实现细节,包括内存池结构和内存块管理。本篇我们来分析一下RT-Thread的内存堆MEMHEAP的实现原理。内存堆MEMHEAP的特点:按需分配,需要多少内存就…

小伟婚后首次看望丈母娘,大衣哥准备了一大三轮车礼品,太豪横了

伴随着春节的临近,大衣哥的儿子小伟, 又一次迎来自己的高光时刻,他和未婚妻一起携手,步入了神圣的婚姻殿堂,大衣哥也长出一口气。儿子小伟再婚,大衣哥完成了一小半任务,接下来还要生孩子&#x…

【Python基础篇】Python中的七种数据类型

文章目录前导一、数字类型(Number)二、布尔类型(Boolean)三、字符串类型(String)3.1 字符串索引3.2 字符串截取、拼接和复用四、列表类型(List)4.1 in和not in4.2 len()4.3 添加/删除…

Three.js 打造酷炫的三角形

在前一章中,我们通过 BufferGeometry 创建了一个正方形,本节我们利用 BufferGeometry 打造一簇酷炫的三角形,最终的效果如下图所示: 从效果图中可以发现,每一个三角形的位置、大小、颜色都是随机的。 // 共有50个三角…

医疗影像工具LEADTOOLS 入门教程: 检测和提取机读旅行证件 - 控制台 C#

LEADTOOLS 是一个综合工具包的集合,用于将识别、文档、医疗、成像和多媒体技术整合到桌面、服务器、平板电脑、网络和移动解决方案中,是一项企业级文档自动化解决方案,有捕捉,OCR,OMR,表单识别和处理&#…

专注分布式架构 莱商银行的数字化转型实践

本文刊登于《金融电子化》杂志 2022 年 12 月下,作者魏汝浩为莱商银行首席信息官。2021 年 12 月 29 日,中国人民银行印发《金融科技发展规划(2022—2025 年)》(银发〔2021〕335 号),提出新时期…

分享166个ASP源码,总有一款适合您

166个ASP源码下载链接:https://pan.baidu.com/s/19W7FmY9nADL1Rge8e5uqiQ?pwdskhh 提取码:skhh import os import shutil import time from time import sleepimport requests from bs4 import BeautifulSoup from docx import Document from docx.sh…

Shader从入门到放弃(四) —— 绘制闪耀星际

前言 经过3个章节的学习,相信大家对shader编程也逐渐的有了一些感觉,所以这次我们玩个“大”的!。 今天的学习内容是绘制“闪耀星际”,正如歌中唱的那样: 星际闪耀光影,落入你的眼睛,如迷人的…

Dubbo泛化调用

Dubbo泛化调用 1. 场景 场景一:我们要搭建一个统一的测试平台,可以让各个业务方在测试平台中通过输入接口、分组名、方法名以及参数值,在线测试自己发布的 RPC 服务。这时我们就有一个问题要解决,我们搭建统一的测试平台实际上是…

【论文速递】CVPR2022 - 泛化的小样本语义分割

【论文速递】CVPR2022 - 泛化的小样本语义分割 【论文原文】:Generalized Few-shot Semantic Segmentation 获取地址:https://openaccess.thecvf.com/content/CVPR2022/papers/Tian_Generalized_Few-Shot_Semantic_Segmentation_CVPR_2022_paper.pdf博…

【ROS2 入门】Jeston TX1 JetPack_4.6.3环境 ubuntu 18.04 ROS2 安装

大家好,我是虎哥,从今天开始,我将花一段时间,开始将自己从ROS1切换到ROS2,在上一篇中,我们再虚拟机环境中安装了 ROS2 eloquent版本,并完成了初步的验证,但是做为一个偏硬件的博主&a…

nginx禁止外网访问

1、安装 libmaxminddb 库 apt updateapt install libmaxminddb0 libmaxminddb-dev mmdb-bin上面安装的软件包是: libmaxminddb0 libmaxminddb-dev 是MaxMind地理定位数据库mmdb-bin – 二进制。 从命令行调用的程序。 使用此命令手动定位 IP 安装参考 2、下载geoi…

node学习笔记

阶段一 1 初始Node.js javascript 运行环境 1.2 Node.js中的javacript 运行环境 1.3 Node.js环境安装 百度 1.4 node.js 执行javaScript 代码 2 fs文件系统模块 2.1 fs文件系统模块概念 导入文件系统模块: const fs require(fs)fs.readFile() // 1 导入fs文件…

【进阶C语言】通讯录(后期会升级)

文章目录一.基本框架与功能二.头文件的详细内容三.函数的实现1.打印菜单2.初始化通讯录3.添加联系人信息4.打印联系人信息5.查找名字6.删除联系人信息7.查找联系人8.修改联系人信息9.排序联系人(按照名字)四.总结1.test.c2.contact.c3.contact.h一.基本框…

智能电风扇(stm32f103c8t6)(直流电机,热敏传感器)(TIM,ADC)

前言 我的毕业论文的课题 提示:以下是本篇文章正文内容,下面案例可供参考 一、热敏传感器计算温度(ADC采样单通道) #include "stm32f10x.h" // Device header#define T25 298.15 #define B 3…

看完这篇 教你玩转渗透测试靶机vulnhub——MONEYBOX: 1

Vulnhub靶机MONEYBOX: 1渗透测试详解Vulnhub靶机介绍:Vulnhub靶机下载:Vulnhub靶机安装:Vulnhub靶机漏洞详解:①:信息收集:②:FTP匿名登入:③:SSH暴力破解④:…

Java操作Word模板产生全新内容Word

1. spire.doc的jar引用 首先我们需要用到国产word处理工具jar包spire.doc,可以通过maven仓库寻找,然后在pom文件中直接引用。 此处需要注意,我们需要使用的是spire.doc.free(免费版的),切勿使用spire.doc&a…

c++ - 第23节 - C++的类型转换

1.C语言中的类型转换 在C语言中,如果赋值运算符左右两侧类型不同,或者形参与实参类型不匹配,或者返回值类型与接收返回值类型不一致时,就需要发生类型转化,C语言中总共有两种形式的类型转换:隐式类型转换和…