博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python 中 is, is not ,==, != 的区别
阅读量:4129 次
发布时间:2019-05-25

本文共 465 字,大约阅读时间需要 1 分钟。

首先说结论:

1、is, is not 对比的是两个变量的内存地址

2、==,!= 对比的是两个变量的值

由此可以进一步推出:

a、假如比较的两个变量,指向的都是不可变的类型(str, tuple等),那么is,is not 和 ==,!= 是完全等价的。

b、假如对比的两个变量,指向的是不可变得类型(list,dict等),则两者是有区别的。

 

现分别对这两种情况加以说明:

1、比较的两个变量均指向不可变类型

a="hello"b="hello"print(a is b, a==b) # 输出为 True, True

因为"hello" 为str 类型,所以两者指向同一内存地址,故 is 和 == 输出均为 True.

 

2、比较的两个变量均指向可变类型

a=["hello"]b=["hello"]print(a is b, a==b) # 输出为 False, True

虽然两个列表的相同,但是因为列表是可变类型,所以两次赋值的内存地址是不一样的,故 is 输出为False, == 输出为 True.

以上内容转载自

你可能感兴趣的文章
vue项目打包后无法运行报错空白页面
查看>>
Vue 解决部署到服务器后或者build之后Element UI图标不显示问题(404错误)
查看>>
element-ui全局自定义主题
查看>>
facebook库runtime.js
查看>>
vue2.* 中 使用socket.io
查看>>
openlayers安装引用
查看>>
js报错显示subString/subStr is not a function
查看>>
高德地图js API实现鼠标悬浮于点标记时弹出信息窗体显示详情,点击点标记放大地图操作
查看>>
初始化VUE项目报错
查看>>
vue项目使用安装sass
查看>>
HTTP和HttpServletRequest 要点
查看>>
在osg场景中使用GLSL语言——一个例子
查看>>
关于无线PCB中 中50欧姆的特性阻抗的注意事项
查看>>
Spring的单例模式源码小窥
查看>>
后台服务的变慢排查思路(轻量级应用服务器中测试)
查看>>
MySQL中InnoDB事务的默认隔离级别测试
查看>>
微服务的注册与发现
查看>>
bash: service: command not found
查看>>
linux Crontab 使用 --定时任务
查看>>
shell编程----目录操作(文件夹)
查看>>