一.id()函数
Id()函数 :通过id()查看一个变量表示的值在内存中的地址
id值相同是应为在程序运行中产生了数据池,会对字符串和整数进行缓存, 为了节省内存。但其他类型(列表,数组,字典)不存在
对于数字:
-5 —— 256是会被加到小数据池中的. 每次使用都是同一个对象.
对于字符串:
1. 如果是纯文字信息和下划线. 那么这个对象会被添加到小数据池
2. 如果是带有特殊字符的. 那么不会被添加到小数据池. 每次都是新的
3. 如果是单一字母*n的情况. 'a'*20, 在20个单位内是可以的. 超过20个单位就不会添加到小数据池中
注意:
(一般情况下): 在py⽂文件中. 如果你只是单纯的定义一个字符串. 那么一般情况下都是会被添加到小数据池中的.
我们可以这样认为: 在使用字符串的时候, python会帮我们把字符串进行缓存, 在下次使用的时候直接指向这个字符串即可.
可以节省很多内存.
is 和 id的关系:
is比较的就是id()计算出来的结果. 由于id是帮我们查看某数据(对象) 的内存地址. 那么is比较
的就是数据(对象)的内存地址.最终我们通过is可以查看两个变量使⽤的是否是同一个对象.
二.is 和 == 区别
== :判断左右两端是否相等和一致,比较的是内容
is : 判决的是内存地址是否相等 用id()的值来判断
三,编码的补充
想要储存,必须先编码
- python2中默认使用的是ASCII码,所以不支持中文,如果需要在python2中更改编码。
Python2 转换为python3的编码,在python2前面加 -*- encoding:utf-8 -*-
2.python3中:内存中使用的unicode
encode() 编码:获取到的是编码之后的结果。编码之后的内容是bytes类数据类型
英文:编码之后的结果是英文本身
中文:编码之后UTF – 8下,一个中文3个字节
Decode() 解码:把bytes数据类型编程我们熟悉的字符串