is 和 == 的区别

1. id()

通过id()我们可以查看到⼀个变量表示的值在内存中的地址.

小数据池(常量池): 把我们使用过的值存储在小数据池中.供其他的变量使用. 小数据池给数字和字符串使用, 其他数据类型不存在. 对于数字: -5~256是会被加到小数据池中的. 每次使用都是同一个对象. 对于字符串: 

1. 如果是纯文字信息和下划线. 那么这个对象会被添加到小数据池

2. 如果是带有特殊字符的. 那么不会被添加到小数据池. 每次都是新的

3. 如果是单一字母*n的情况. 'a'*20, 在20个单位内是可以的. 超过20个单位就不会添加 到小数据池中

注意(一般情况下): 在py文件中. 如果你只是单纯的定义一个字符串. 那么⼀般情况下都是会 被添加到小数据池中的. 我们可以这样认为: 在使用字符串的时候, python会帮我们把字符串 进行缓存, 在下次使用的时候直接指向这个字符串即可. 可以节省很多内存.

说了这么多. 这个id()和is有什么关系呢. 注意. is比较的就是id()计算出来的结果. 由于id是帮我 们查看某数据(对象) 的内存地址. 那么is比较的就是数据(对象)的内存地址. 最终我们通过is可以查看两个变量使用的是否是同⼀个对象. 

==  双等表示的是判断是否相等, 注意. 这个双等比较的是具体的值.而不是内存地址

猜你喜欢

转载自www.cnblogs.com/beihan/p/9289480.html