老男孩python全栈就业班第9期第1部分基础+模块+面向对象+网络编程第6天-小知识点汇总及编码进阶
小知识点汇总及编码进阶
1.python2和python3的区别
1)python2
编码是 ASCII
print可以加括号,也可以不加
有range() 和 xrange()
raw_input
2)python3
编码是utf8
print 是否必须加括号
python3 只有 range()
input
2.赋值 == 比较值是否相等 is 比较,比较的是内存地址
li1 = [1,2,3] li2 = li1 print(id(li1), id(li2)) #id值相同
3.数字,字符串,小范围内可共用一个地址,节省内存空间
小数据池
数字的范围 -5 — 256
字符串,第一不能含有特殊字符,第二 s*20 还是同一个地址,s*21以后都是两个地址
i1 = 6 i2 = 6 print(id(i1), id(i2)) #id值一样的 i1 = 300 i2 = 300 print(id(i1), id(i2)) #id值不一样
4.剩下的 list dict tuple set
l1 = [1,] l2 = [1,] print(l1 is l2) #False
5.编码
ASCII
A:00000010 8位 1个字节
UNICODE
A:00000000 00000001 00000010 00000100 32位 4个字节
中:00000000 00000001 00000010 00000110 32位 4个字节
UTF-8
A:00100000 8位 1个字节
中:00000001 00000010 00000100 24位 3个字节
GBK
A:00000110 8位 1个字节
中:00000010 00000110 16位 2个字节
1)各个编码之间的二进制,是不能互相识别的,会产生乱码
2)文件的储存和传输不能是unicode(只能是utf-8、utf-16、gbk、gb2312、ascii等)
6.Python3
字符串在内存中是用unicode编码
bytes 类型
对于英文:
str:表现形式:s = 'alex'
编码方式:010101010 unicode
bytes:表现形式:s = b'alex'
编码方式:00010101 utf-8 gbk...
实例
s = 'alex' s1 = b'alex' print(s.type(s)) print(s1.type(s1))
对于中文:
str:表现形式:s = '中国'
编码方式:010101010 unicode
bytes:表现形式:s = b'x\e91\e91\e01\e21\e31\e32'
编码方式:00010101 utf-8 gbk...
实例
s = '中国'
print(s.type(s))
s1 = b'中国'
print(s1, type(s1)) #报错
s1 = 'alex'
#encode 编码,如何将str转换成keyss
s11 = s1.encode('utf-8')
print(s11)
s2 = '中国'
s22 = s2.encode('utf-8')
s222 = s2.encode('gbk')
print(s22)
print(s222)
posted on 2019-11-21 09:18 herisson_pan 阅读(14) 评论(0) 收藏 举报
浙公网安备 33010602011771号