python相等性测试的两种方法

Python有两种方法可以测试相等性:

1、 == 操作符测试值得相等性。Python运行相等测试,递归地比较所有的内嵌对象。(比较内容是否相等)

2、 is 表达式测试对象的一致性。Python测试二者是否是同一个对象。(比较内存地址是否相同)

例如:

 

 

    lst1 = [1,2,3,4,[5,6]]

    lst2 = [1,2,3,4,[5,6]]

    lst3 = lst1

    print 'lst1 == lst2\t',lst1 == lst2 #  内容相等

    print 'lst1 is lst2\t',lst1 is lst2 #  内存地址不相同 

    print 'lst3 is lst1\t',lst3 is lst1 #  内存地址相同

-------------- result start -------------------------

 

lst1 == lst2 True

lst1 is lst2 False

lst3 is lst1 True

-------------- result end -------------------------

 

 

例外:

    str1 = 'hello'

    str2 = 'hello'

    print str1 == str2

    print str1 is str2

-------------- result start -------------------------

str1 == str2 True

str1 is str2 True

-------------- result end -------------------------

这里两个截然不同的对象碰巧有着相同的值, == 应该为True,is应该为False。但是这里都是True。为什么呢?因为python内部暂时存储并重复使用“短字符串”作为一种“最佳化”的优化方式。事实上,内存里面只有一个'hello'字符串,被str1和str2共享使用。为了得到一个更一般的结果,请看下例:

 

例如:

    str3 = 'hello' * 10 #重复10个hello

    str4 = 'hello' * 10 #重复10个hello

    print 'str3 == str4\t', str3 == str4

    print 'str3 is str4\t', str3 is str4

 

-------------- result start -------------------------

 

str3 == str4 True

str3 is str4 False

 

 

-------------- result end -------------------------

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值