美文网首页
python中的is, ==与对象的相等判断

python中的is, ==与对象的相等判断

作者: harlan_win | 来源:发表于2019-04-02 14:51 被阅读0次

一、python对象的"==、is"比较

"""
1、python的比较总是检查复合对象的所有部分,直到可以得出结果为止。
2、会自动遍历嵌套的所有数据结构,有多深走多深,首次发现的差值将决定比较的结果
"""

"""
== :操作符测试值的相等性
is :表达式测试对象的一致性,表示同一个对象,在同一内存地址中
输出结果:
True False
"""
L1 = [1,('A',2)]
L2 = [1,('A',2)]
print L1 == L2,L1 is L2

"""
关于短字符串的一致性比较特殊:
python内部暂时储存并重复使用短字符串作为最佳化,实际内存中只有一个字符串'spam‘供S1、S2分享
输出结果:
True True
"""
S1 = "SPAM"
S2 = "SPAM"
print S1 == S2,S1 is S2

"""
当比较的字符串较长时 is比较结果为False
运行结果:False
"""
S11 = "a longer strnig"
S22 = "a longer string"
print S11 is S22

"""
列表、字典、元组、自定义程序类型的一致性判定(is)
以下判定结果均为False,因为都不是一个对象,内存地址不一样
"""
l = [1,3,'a']
print l is list

d = {1:1,'a':'b'}
print d is dict

t = (1,2,3)
print t is tuple

class A(object):
def init(self):
print "object is born!"

a = A()
print a is A
print '---------------'

a1 = 1
a2 = 1
print a1 is a2 #返回True

二、python对象的大小比较规则:

"""
1、数字通过相对大小进行比较
2、字符串按照字典顺序(编码顺序),一个字符接一个字符进行比较
3、列表和元组从左到右对每部分的内容进行比较
4、字典通过排序后的(键,值)列表进行比较,pyton3.0中不支持
5、数字混合类型pyton3.0中不支持,拼音。6中允许
"""

运行结果:[True, True, True, True]

print [33 < 99,'abc' < 'ac',{'a':1,'b':2} > {'a':1,'B':2},1 < 'spam']

嵌套比较

"""
运行结果:False False True
"""
Li1 = [1,('a',3)]
Li2 = [1,('a',2)]
print Li1 < Li2,Li1 == Li2,Li1 > Li2

python为不同的对象如何分配内存的小知识

id方法的返回值就是对象的内存地址。

python中会为每个出现的对象分配内存,哪怕他们的值完全相等(注意是相等不是相同)。如执行a=2.0,b=2.0这两个语句时会先后为2.0这个Float类型对象分配内存,然后将a与b分别指向这两个对象。所以a与b指向的不是同一对象:

a=2.0
b=2.0
a is b
False
a==b
True
但是为了提高内存利用效率对于一些简单的对象,如一些数值较小的int对象,python采取重用对象内存的办法,如指向a=2,b=2时,由于2作为简单的int类型且数值小,python不会两次为其分配内存,而是只分配一次,然后将a与b同时指向已分配的对象:
a=2
b=2
a is b
True
如果赋值的不是2而是大的数值,情况就跟前面的一样了:

a=5555
b=5555
a is b
False
id(a)
12464372
id(b)
12464396

相关文章

  • python中的is, ==与对象的相等判断

    一、python对象的"==、is"比较 """1、python的比较总是检查复合对象的所有部分,直到可以得出结果...

  • Python is 与 == 的区别

    在Python中使用is与 ==都可以用来判断两个对象是否相等。不同的是 ==是对对象的值进行判断,而is是对对象...

  • python 高级编程①

    1 ‘==’ 与‘is ’的使用 ① ‘==’判断两个对象内容是否相等 ‘is’判断两个对象的地址是否相等 ②在p...

  • 关于isEqual

    isEqual,用来判断两个对象是否相等。但是,与“==”判断指针地址是否相等,不同的是,它判断的是对象的内容方...

  • java API(一)

    equals方法: 我们经常遇到过两个对象的比较,判断2个对象是否相等的情况,在python中,因为不是强类型语言...

  • python笔记day6

    补充: == 和 is == --- 判断两个数据的值是否相等 is --- 判断地址是否相等 python数...

  • js 判断两个对象是否相等

    判断对象相等的步骤:

  • 判断两个Integer值相等为什么不用==

    今天在开发中判断两个Integer值相等, 得出的结论,Integer为对象,如果判断相等要用equals,而不能...

  • C# 相等比较

    引用相等性 判断两个对象是否引用同一基础对象。使用 ReferenceEquals 方法判断: 值相等性 使用 =...

  • JavaScript对象相等性判断

    函数isEqual接收两个对象, 判断它们的相等性, 返回boolean 根据相等判断的实用性, 做出如下的相等性...

网友评论

      本文标题:python中的is, ==与对象的相等判断

      本文链接:https://www.haomeiwen.com/subject/wolgbqtx.html