1.字符串的定义
由一系列字符编码值组成的不可变序列容器。
由上图我们可以看见字符串储存在内存空间中的原理,它是将字符转换为编码值,再将编码值转换成二进制保存到内存空间中。那编码值是怎么来的呢?
2.编码
- 字符集:字符与整数对应关系的集合
ASCII:包含英文,数字等字符
GBK:兼容ASCII,包含21886个中文
Unicode:几乎涵盖全球所有已知字符
- 编码方式:将字符转换为整数的规则
ASCII:每个字符占1个字节
GBK:英文1个字节,中文2个字节
UTF8:英文1个字节,中文3个字节
3.不可变类型数据为什么不可变
- 采用按需分配的存储策略,节省内存空间
- 修改数据时若在原有空间,可能破坏其他数据;所以每次修改都会创建新数据,替换变量中记录的数据地址。
例如:a = 'a', a = '谭' 如果不创建新的数据,原来存储字符串a的空间不能存下字符串谭,因为a字符串占一个字节,而谭字符串在GBK编码方式中占2个字节,在UTF8中占3个字节,在Python中它不管你想修改的字符串比原先的大还是小,统一创建新数据。
4.那变量中数据地址发生时,为什么不创建一个新的变量呢?
因为变量中存储的数据内存地址等大,所以可以在原有空间中改变,大小为八个字节。
5.转义符
改变原始含义的特殊字符
\" \' \\
r" " 字符串中没有转义符
r"C:\newfile\test.py
6.格式化字符串
占位符 % (变量)
%s 原样输出
%.整数f 保留小数的精度
%.整数d 保留整数的位数