python中“is”和“==”的区别

最近在刷题时,有一道题需要判断下2个字符串是否相等

开始的时候,是用"is"来进行判断的,例如  a is b 

但是实际运行时,发现并未得到预期的判断结果(看来里面发生了什么我不知道的事情~~)


 网上冲浪一番,很轻松就找到了答案

原文传送门:https://www.zhihu.com/question/20179728

备份:

Python中,万物皆对象,每个对象包含3个属性,id,type,value

id就是对象地址,可以通过内置函数id()查看对象引用的地址;

type就是对象类型,可以通过内置函数type()查看对象的类型;

value就是对象的值;

is 比较的是 id 是否一样,== 比较的是 值 是否一样


 python为每个对象分配内存的机制

1、python在为数字分配内存时,按照数字的内容来分配内存,即a = 5;b = 5时,python只对数字5分配一块内存空间,而不是对变量a和b各分配一块内存;(在python交互式界面有内存池缓存机制,只适用于-5~256,在python脚本编程中则没有这个限制)

2、在计算机中,每一块内存都有一个唯一的地址以供变量去访问内存中的内容,这个地址会被赋给变量的id属性,所以a = 5;b = 5时a和b的id是一样的,都是5所在内存的地址。

3、在计算机中,当地址指定后,这块地址对应的内存时唯一确定的。

is就是用来判断两个变量的id是否相等,当两个变量的id相等时,说明这两个变量指向的地址是相同的,那么这两个变量的一切属性都相同。


 所以,如果想判断2个字符串的是否相等时,使用 == 肯定不会出错的

原文地址:https://www.cnblogs.com/hanmk/p/13760341.html