最近在刷题时,有一道题需要判断下2个字符串是否相等
开始的时候,是用"is"来进行判断的,例如 a is b
但是实际运行时,发现并未得到预期的判断结果(看来里面发生了什么我不知道的事情~~)
网上冲浪一番,很轻松就找到了答案
备份:
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个字符串的值是否相等时,使用 == 肯定不会出错的