格式化输出和字符串转义
占位符 使用示意 作用 %s '%s %s' % ('hello', 'world') 表示占位的是str %d '%d %d' % (1, 2) 表示占位的是int %d '%d %d' % (1.3,2.9) 如果使用float占位,输出整数部分 %f '%f %f' % (1.3,2.9) 表示占位的是float,默认不足6位小数末尾用0补全 以上是上上节课的内容 %有关的内容 %.if '%.2f %.4f' % (1.123, 2.12) i为一个整数,表示小数后的位数,不足用0补全 %xf '%8f<>%10f' % (1.2, 1.2) x为一个整数,表示整个数字的位数,不足在左边用空格补全 %+f '%+f<>%+f' % (1.2, 1.2)' + 表示显示正负号 %-f '%-7.2f<>%-7.2f' % (-1.2, 1.2) - 表示不足位数在右边用空格补全 %c '%c' % 97 表示占位的为ASCII码,输出ASCII对应的字符 %o '%o' % 8 表示占位的为十进制数字,输出对应的八进制数字 %x ‘%x’ % 16 表示占位的为十进制数字,输出对应的十六进制数字 %e ‘%e’ % 11 表示占位的是数字,用科学计数法输出 %r '%r<>%r' % ('1', 1) 原始形象输出;区分字符串1 和 数字1 foramt有关的内容 {index} ‘{1}<>{0}’.format('零', '一') 索引输出 {obj} '{x}<>{y}'.format(x=2, y=1) 关键字输出 {:x} '{:x}'.format(16) 十进制转十六进制 {:o} '{:o}'.format(8) 十进制转八进制 {:*<i} '{:#<5} {:*<8}'.format(123, 'abc') i表示整数,*表示补全的符号;不足位数在右边用符号补全 {:*>i} '{:#>5} {:*>8}'.format(123, 'abc') i表示整数,*表示补全的符号;不足位数在左边用符号补全 {:*^i} '{:#^5} {:*^8}'.format(123, 'abc') i表示整数,*表示补全的符号;不足位数在两边用符号补全
接下来是转义符
转义符 作用 \a 发出一声响 \n 换行符 \t 水平制表符 \b 退格符 \r 将当前位置移动到本行开头 \ 代表 \,转义特殊字符 \0 空字符 字符串处理
添加的字符 作用 u 对字符进行Unicode编码 r 取消转义 b 代表该字符串为bytes类型
字符串编码
PPT第十三页 编码规则
PPT第十四页
方法 作用 encode 编码 decode 解码 深浅复制
<font color='red'> 深浅复制只在列表嵌套的时候才讨论 </font>
li1 = [1,2,3,[4,5,6]]
li2 = li1.copy()
这个时候我们的li1和li2是不是相等的?如果我在这里修改li1[3][0] = 'a'
我们来看li1的结果 会变成什么?是不是[1,2,3,['a',5,6]],这个时候我们来看li2变成了和li1一样的了?
为什么呢?我么来看li1[3]和li2[3]的ID,是不是一样的,说明什么?说明他们是同一个对象;这就是浅复制
那么什么是深复制呢?
import copy
li3 = copy.deepcopy(li1)
现在我们再来修改嵌套的列表,看看会不会改变另一个bytes和bytearray
1:bytes(二进制序列类型)
一:用指定长度的0来填充字节对象
bys1 = bytes(5)
二:二进制字符串对象
bys2 = bytes(b'abcde')
2:bytearray(二进制数组)
一:用指定长度的0来填充字节对象
bya1 = bytearray(5)
二:二进制字符串对象
bya2 = bytearray(b'abcde')