python逻辑运算操作符问题。字符串相关的!

>>> a='scjscjscj'
>>> b='scjscjscj'
>>> a is b
True
>>> a='I love you'
>>> b='I love you'
>>> a is b
False
>>>

这是为什么呢???

is不是逻辑运算操作,is是通过每个对象的id来判定是否相等的。

is判断的是a对象是否就是b对象,是通过id来判断的
==判断的是a对象的值是否和b对象的值相等,是通过value来判断的
>>> x=str('1 2 3')
>>> id(x)
34190944
>>> y=str('1 2 3')
>>> id(y)
34011392
>>> x=str('你好啊')
>>> id(x)
34238688
>>> y=str('你好啊')
>>> id(y)
34190720

id不同的时候,is就返回false,至于字符串何时id相等,那是python字符串的内部实现了。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-07-05
is操作符是比较的‘对象id’,不是比较‘对象的内容’。即比较的对象是否相同。
当id(a)的数值等于id(b)时, is成立。

你可以输入id(a)查看具体的id值。会发现第一个例子中a和b的id相同,而第二个的id变化了。追问

也谢谢你啊,但只能选一个、

追答

郁闷,我先答的。

相似回答