Python——基础数据类型(补充)
Posted xc_718
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python——基础数据类型(补充)相关的知识,希望对你有一定的参考价值。
1.基础数据类型汇总补充
(1)小数据池:
为了节省空间,数字和字符串有,其他的没有【了解】
数字:-5---256之间的数字共用一个内存地址
#(1)i1 = i2 id(i1) == id(i2) i1 = 6 i2 = 6 print(id(i1),id(i2)) #id(i1)=1436311936 id(i2)=1436311936 #(2)i1 = i2 id(i1) != id(i2) i3 = 300 i4 = 300 print(id(i1),id(i2)) #id(i1)=1683866035312,id(i2)=1683866623792
字符串:
不能含有特殊字符,aa和aa地址相同,aa+和aa+地址不同
单个字符*数字(<=20)时同一个地址,多于一个字符/大于等于21则不是同一个地址
(2)列表 list
(3)str和bytes区别
s = \'alex\'s1 = b\'alex\'print(s,type(s)) #alex <class \'str\'>print(s1,type(s1)) #b\'alex\' <class \'bytes\'> s = \'中国\' print(s,type(s)) s1 = b\'中国\'print(s1,type(s1)) #SyntaxError: bytes can only contain ASCII literal characters.
2. 编码
(1)ascii---python2
A:00000010 8位 一个字节
(2)unicode
A:00000000 00000001 00000010 00000100 32位 四个字节
中:00000000 00000001 00000010 00000110 32位 四个字节
(3)utf-8---python3
A:00100000 8位 一个字节
中:00000001 00000010 00000110 24位 三个字节
(4)gbk---终端
A:00000110 8位 一个字节
中:00000010 00000110 16位 两个字节
<1> 各个编码之间的二进制不能互相识别,会产生乱码。
<2> 文件的储存和传输不能是Unicode(只能是utf-8,utf-16,gbk,gbk2312,ascii等)
(5)Python3中的编码
str进行存储和传输之前,需要先将str(Unicode)转换成bytes(utf-8/gbk),再进行传输
str 在内存中是用Unicode编码的
bytes 和str很相似,唯一区别是编码方式不同
对于英文:
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
encode:编码Unicode--->gbk/utf-8,如何将str--->bytes(可以设置编码方式)
# (1)英文 s1 = \'alex\' s11 = s1.encode(\'utf-8\') print(s11) #b\'alex\' s11 = s1.encode(\'gbk\') print(s11) #b\'alex\' # (2)中文 s2 = \'中国\' s22 = s2.encode(\'utf-8\') #24位,3个字节,表示一个字符 print(s22) #b\'\\xe4\\xb8\\xad\\xe5\\x9b\\xbd\' s22 = s2.encode(\'gbk\') #16位,2个字节,表示一个字符 print(s22) #b\'\\xd6\\xd0\\xb9\\xfa\'
3. =、==、is、id
(1)= : 赋值
(2)==:比较-----值是否相等
(3)is :比较-----内存地址
(4)id : 内存地址
以上是关于Python——基础数据类型(补充)的主要内容,如果未能解决你的问题,请参考以下文章