首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

python相等性测试的两种步骤

2013-11-09 
python相等性测试的两种方法Python有两种方法可以测试相等性:1、 操作符测试值得相等性。Python运行相等测

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 == 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 -------------------------

?

?

热点排行