Python基础---编码
程序员文章站
2022-06-14 15:21:37
...
1.Python3 编码转换
编码方式 | 编码使用的字节 |
---|---|
ASCII | 英文:一个字节 |
Unicode | 没有优化,所有字符都是4个字节 |
UTF-8 | 英文:一个字节 中文: 三个字节 |
GBK | 英文: 一个字节 中文: 两个字节 |
(1).各个编码之间的二进制,是不能互相识别的,会产生乱码。
(2)文件的储存,传输,不能是Unicode占用空间大(只能是utf-8 utf-16 gbk,gb2312,asciid等)
Python3中字符串在内存中的编码是Unicode,由于Unicode编码不能用于传输,此时使用另一种数据类型bytes,这种数据类型的编码方式可以为UTF-8或GBK。
'''
bytes数据类型:
对于英文:
str :表现形式:s = 'alex'
编码方式: 010101010 unicode
bytes :表现形式:s = b'alex'
编码方式: 000101010 utf-8 gbk。。。。
对于中文:
str :表现形式:s = '中国'
编码方式: 010101010 unicode
bytes :表现形式:s = b'x\e91\e91\e01\e21\e31\e32'
编码方式: 000101010 utf-8 gbk。。。。
'''
str1='xiaojing'
str2=b'xiaojing'
print(str1,type(str1)) #xiaojing <class 'str'>
print(str2,type(str2)) #b'xiaojing' <class 'bytes'>
str1='中国'
str2=str1.encode('utf-8') #encode编码,常用编码方式:utf-8 gbk
print(str2) # b'\xe4\xb8\xad\xe5\x9b\xbd' 两个中文6个字节----说明是utf-8编码,如果是四个字节则是GBK
2.python2与python3的区别
'''
python2
print() print 'abc'
range() xrange()生成器
raw_input()
python3
print('abc')
range()
input()
'''
3. 小数据池
-
数字、字符串存在小数据池
当数字或字符串在一定范围内,如果值相等会共用同一份数据。
数字的范围:-5~256
字符串:1.没有特殊字符
2.s*20(一个字符乘以20以下还是同一个地址,大于或等于20则地址不同)
>>> a=50 >>> b=50 >>> print(id(a),id(b)) 1515619984 1515619984 >>> a=300 >>> b=300 >>> print(id(a),id(b)) 30057584 30707504
-
list、dict、tuple、set 数据类型不存在小数据池
>>> list1=[1,2] >>> list2=[1,2] >>> print(id(list1),id(list2)) 42388936 42386056