==和is

python 中的对象包含三要素:id、tpye、value

其中id用来唯一标示的对象,tpye标识对象的类型,value是对象的值

a=b,a==b

 is   判断的是 a 对象是否就是 b对象 ,是通过id来判断;

== 判断的是 a 对象的值是否和 b 对象的值相等,是通过value来判断的。

===================分割线==============================

来看着例子:


总结:

 is   是比较两个引用是否指向了同一个对象(引用比较)

== 是比较两个对象的值是否相等(值得比较)

拓展:

 整数在程序中的使用非常广泛,Python为了优化速度,使用了小整数对象池 避免为整数频繁申请和销毁内存空间。

Python 对小整数的定义是 [-5, 257) 这些整数对象是提前建立好的,不会被垃圾回收。在一个 Python 的程序中,

所有位于这个范围内的整数使用的都是同一个对象.

来看个例子:


同理单个字母也是这样的。

python中有这样一个机制——intern(字符串驻留)机制,

让他只占用一个HelloWorld”所占的内存空间。靠引用计数去维护何时释放。



猜你喜欢

转载自blog.csdn.net/sun_daming/article/details/80204593