sol229 发表于 2017-4-29 12:47:36

python相等性测试的两种方法

  Python有两种方法可以测试相等性:
  1、 ==操作符测试值得相等性。Python运行相等测试,递归地比较所有的内嵌对象。(比较内容是否相等)
  2、 is表达式测试对象的一致性。Python测试二者是否是同一个对象。(比较内存地址是否相同)
  例如:
  lst1 = ]
  lst2 = ]
  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 == lst2True
  lst1 is lst2False
  lst3 is lst1True
  -------------- result end -------------------------
  例外:
  str1 = 'hello'
  str2 = 'hello'
  print str1 == str2
  print str1 is str2
  -------------- result start -------------------------
  str1 == str2True
  str1 is str2True
  -------------- 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 == str4True
  str3 is str4False
  -------------- result end -------------------------
页: [1]
查看完整版本: python相等性测试的两种方法