码迷,mamicode.com
首页 > 编程语言 > 详细

python中的 == 和 is 的区别

时间:2018-08-02 16:11:29      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:charm   比较   pytho   pyc   ==   使用   结果   字符   class   

== 比较的是两边的值

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
 

 

 

 

 

 

 

python中的 == 和 is 的区别

标签:charm   比较   pytho   pyc   ==   使用   结果   字符   class   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!