python-"is" v.s. "=="
来源:互联网 发布:返利机器人源码 编辑:程序博客网 时间:2024/06/05 15:15
先说结论:“==”只是判断两个变量是否相等,“is”则判断两个变量是否是同一对象。
看例子:
>>> int_a = 1>>> int_b = 1>>> int_a == int_bTrue>>> int_a is int_bTrue>>> int_c = 10000>>> int_d = 10000>>> int_c == int_dTrue>>> int_c is int_dFalse
这是为什么呢?再看看这四个变量的id:
>>> id(int_a)1908736464>>> id(int_b)1908736464>>> id(int_c)2471603994928>>> id(int_d)2471603994864
可以看到int_a
和int_b
的id是相同的,但是int_c
和int_d
是不同的,至于为什么id不同,就牵扯到在《 python-对象之hashable&unhashable与immutable&mutable》里面提到的“解释器在对值很小的int和很短的字符串的时候做了一点小优化,只分配了一个对象”。由此看出,”is”实际上比较的是id,可以理解为对象的地址,”==”比较的是值,就算两个变量存储位置不同,只要值相同,”==”就会返回True。所以说”is”比”==”更加严格,“==”只是表示这两个变量相等,“is”则表示这两个变量是同一个对象。
补充一句:判断一个实例是不是某对象的实例,可以使用isinstance(instance_name, class_name)
0 0
- python-"is" v.s. "=="
- ROR v.s. Django@Python
- 优化公式T=S/V
- WRTnode-make V=s出错解决办法
- python == is
- 矩阵转置 [u,s,v]=svd(a)
- Wizards' Duel(物理题s=v*t)
- python_SVD_matlab版svd(U*S*V^T) & python版numpy.linalg.svd(U*S*V)
- Syntax Error v.s. Exception, (try, except, finally) - Python
- Python可变对象v.s.不可变对象,引用
- Python:== 和 is
- python is 和==
- python ==和is
- python-V
- Lustre V.S. Hadoop V.S. Gluster
- Program v/s Process v/s Thread
- Mutex v/s Semaphore v/s Spinlock
- UVALive 3263(欧拉公式,V-E+F==2,几何模版 is under-construction...)
- 信必优将全新的基于意法半导体Accordo 5汽车处理器的数字信息娱乐解决方案推向市场
- unity shader中有哪些属性如何使用
- java.lang.NoSuchMethodException: org.apache.catalina.deploy.WebXml addFilter
- HTTPS详解
- mysql创建用户报错ERROR 1364 (HY000): Field 'ssl_cipher' doesn't have a default value
- python-"is" v.s. "=="
- 滑动框选图片,自定义RecyclerView
- ASimpleCache 轻量级缓存
- 创建vert和frag函数
- NGUI 粒子系统裁剪
- cxf框架Demo1
- log4j学习(二)不同类的日志输出到不同的文件
- Java List(ArrayList初始化)删除元素
- android webview 常用设置 - 记录