Python 中的比较方法 is与==的比较

Example:

>>> test4='this is hello world'

>>> test4[8:13]

'hello'

>>> test4[8:13] is 'hello'
False
>>> test4[8:13] == 'hello'
True


例子中is和==都是比较的方法,但'==' 是用来比较两个对象的值是否相同( equality test),类似 'hello'.__eq__(test4[8:13])

但is比较方法是比较两个对象是不是同一个对象( identity test),相当于:

id(test4[8:13]) == id('hello')


而且这里是比较字符串,字符串有个 interned 特性(string interning is a method of storing only one copy of each distinct string value),详情见:

http://en.wikipedia.org/wiki/String_interning


所以当比较非字符串时:

>>> [1, 2] == [1,2]
True
>>> [1, 2] is [1,2]
False


参考资料:

http://stackoverflow.com/questions/1504717/why-does-comparing-strings-in-python-using-either-or-is-sometimes-produce

http://blog.csdn.net/sasoritattoo/article/details/12451359

http://en.wikipedia.org/wiki/String_interning

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值