python中的 == 和 is 的区别

Posted Welcome to My Blog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python中的 == 和 is 的区别相关的知识,希望对你有一定的参考价值。

== 比较的是两边的值

is 比较的是两边的内存地址  通过 id()获取内存地址

小数据池:我们使用过的值存储在小数据池中,供其他数据使用.

  小数据池仅限于 数字 和 字符串:

    数字的小数池范围  -5---256

    字符串中 1.不能有空格;

          2. 长度不能超过20个字符;

          3. 不能有特殊字符 如:@#$

 

1. id() 获得内存地址

a = alex
print(id(a))   # 36942544  内存地址

2. == 比较两边的值

 

a = alex
b = alex
print(a == b)  #True


n = 10
n1 = 10
print(n == n1) #True


li1 = [1,2,3]
li2 = [1,2,3]
print(li1 == li2) #True

 

3. is 比较的是内存地址

  3.1 列表 字典 元组 集合

 

#列表
li =[1,2,3]
li2 =[1,2,3]
print(li is li2)  #False

#元组
tu =(1,2,3)
tu1 =(1,2,3)
print(tu is tu1)   # False

#字典
dic1 = {name:alex}
dic = {name:alex}
print(dic1 is dic)    #False

 

对比一下上面的 is

#列表
li =[1,2,3]
li2 =[1,2,3]
print(li == li2)  #True

#元组
tu =(1,2,3)
tu1 =(1,2,3)
print(tu == tu1)   # True

#字典
dic1 = {name:alex}
dic = {name:alex}
print(dic1 == dic)    #True

  3.2 对于str  小数据池

    字符串中 1.不能有空格;

          2. 长度不能超过20个字符;

          3. 不能有特殊字符 如:@#$

a = [email protected]
a1 = [email protected]
print(a is a1)    # Fales


a = a*21
b = a*21
print(a is b)     #False


a = "ab  "
b = "ab  "
print(a is b)   #False 但是在pycharm中的结果为True

  3.3 对于int  小数据池

    数字的小数池范围  -5---256

n = -6
n1 = -6  #超出了范围
print(n is n1)  #False

n = -5
n1 = -5
print(n is n1)    #True

n = 257
n1 = 257
print(n is n1) #cmd中为False 在pycharm中显示为True
 

 

 

 

 

 

 





以上是关于python中的 == 和 is 的区别的主要内容,如果未能解决你的问题,请参考以下文章

关于python中的is和==的区别

python中的 == 和 is 的区别

[py]python中的==和is的区别

[未解决问题记录]python asyncio+aiohttp出现Exception ignored:RuntimeError('Event loop is closed')(代码片段

基础篇Python中is和==的区别

Python中的“a is b”和“id(a) == id(b)”有啥区别?