python基础-06
is 和 == 的区别
is 比较的是内存地址
== 比较的是值
id(变量) 返回给你这个变量的内存地址
例子:s="周杰伦"
s1=s
print(id(s),id(s1))
特殊的: lst1=[1,4,7]
lst2=[1,4,7]
lst1.append("小白")
print(lst1,lst2)
print(id(lst1),id(lst2)) #内存地址不同
小数据池(常量池): 把我们使用过的值存储在小数据池中.供其他的变量使用.
小数据池给数字和字符串使用, 其他数据类型不存在.
对于数字: -5~256是会被加到小数据池中的. 每次使用都是同一个对象.
对于字符串:
1. 如果是纯文字信息和下划线. 那么这个对象会被添加到小数据池.
2. 如果是带有特殊字符的. 那么不会被添加到小数据池. 每次都是新的.
3. 如果是单一字母*n的情况. 'a'*20, 在20个单位内是可以的. 超过20个单位就不会添加到小数据池中.
注意(一般情况下): 在py文件中. 如果你只是单纯的定义一个字符串. 那么一般情况下都是会
被添加到小数据池中的. 我们可以这样认为: 在使用字符串的时候, python会帮我们把字符串
进行缓存, 在下次使用的时候直接指向这个字符串即可. 可以节省很多内存.
编码
ASCII 8bit 1byte 英文小写大写字母,特殊字符,数字
GBK 16bit 2byte 中文 兼容ASCII
UNICODE 32bit 4byte 万国码 占空间
UTF-8 UNICODE升级版 英文 1byte 中文 3byte
1. python2中默认使用的是ASCII码. 所以不支持中文. 如果需要在Python2中更改编码,需要在文件的开始编写:# -*- encoding:utf-8 -*-
2. python3中:内存中使用的是unicode码
传输过程中用UTF-8或者GBK.
内存中,程序运行的过程中,编码是UNICODE.
在程序中,字符串可以编码成bytes类型的数据.
编码encode
编码之后的结果和原来的结果其实是一样的,只是看着不一样.