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 = 'alex@'
a1 = 'alex@'
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
 

 

原文地址:https://www.cnblogs.com/kenD/p/9407326.html