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 asyncio+aiohttp出现Exception ignored:RuntimeError('Event loop is closed')(代码片段