Python3 的is、==、isinstance、type的用法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/bingzige/article/details/86535582

isinstance 的用法

>>> a=4
>>> isinstance(a,int)
True
>>> isinstance(a,str)
False
>>> isinstance(a,(str,int,list))
True
>>> a="b"
>>> isinstance(a,str)
True
>>> isinstance(a,int)
False
>>> isinstance(a,(int,str,list))
True
>>> isinstance(a,(int,list,float,str))
True

type的用法

>>> a, b, c, d = 20, 5.5, True, 4+3j
>>> print(type(a), type(b), type(c), type(d))
<class 'int'> <class 'float'> <class 'bool'> <class 'complex'>

type和isinstance的区别

type()不会认为子类是一种父类类型
isinstance()会认为子类是一种父类类型

>>> class A:
...     pass
... 
>>> A
<class '__main__.A'>
>>> A()
<__main__.A object at 0x7fa1bd84aeb8>
>>> class B(A):
...     pass
... 
>>> type(A)
<class 'type'>
>>> type(A())
<class '__main__.A'>
>>> isinstance(A(),A)
True
>>> type(A())==A
True
>>> isinstance(B(),A)
True
>>> type(B())==A
False

is和==的区别

is比较的是内存地址
==比较的是两个对象的值

>>> a = 'cheesezh'
>>> b = 'cheesezh'
>>> id(a)
140332646549168
>>> id(b)
140332646549168
>>> a==b
True
>>> a is b
True
>>> x=y=[4,5,6]
>>> z=[4,5,6]
>>> id(x)
140332500053896
>>> id(y)
140332500053896
>>> id(z)
140332500053192
>>> x==y
True
>>> x==z
True
>>> x is y
True
>>> x is z
False
>>> a=1
>>> b=1
>>> id(a)
9306176
>>> id(b)
9306176
>>> a is b
True
>>> a='chee'
>>> b='chee'
>>> id(a)
140332499976408
>>> id(b)
140332499976408
>>> a is b
True
>>> a=(1,2,3)
>>> b=(1,2,3)
>>> id(a)
140332499966568
>>> id(b)
140332499965992
>>> a=[1,2,3]
>>> b=[1,2,3]
>>> id(a)
140332500058376
>>> id(b)
140332500058568
>>> a is b
False
>>> a={'cheese':1,'zh':2}
>>> b={'cheese':1,'zh':2}
>>> id(a)
140332647225096
>>> id(b)
140332500043744
>>> a is b
False
>>> a=set([1,2,3])
>>> b=set([1,2,3])
>>> id(a)
140332646252616
>>> id(b)
140332502472968
>>> a is b
False

猜你喜欢

转载自blog.csdn.net/bingzige/article/details/86535582