标签:type inf ascii 大于 char code 中文 内存 数据
为了节省空间,数字和字符串有,其他的没有【了解】
数字:-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则不是同一个地址
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.
A:00000010 8位 一个字节
A:00000000 00000001 00000010 00000100 32位 四个字节
中:00000000 00000001 00000010 00000110 32位 四个字节
A:00100000 8位 一个字节
中:00000001 00000010 00000110 24位 三个字节
A:00000110 8位 一个字节
中:00000010 00000110 16位 两个字节
<1> 各个编码之间的二进制不能互相识别,会产生乱码。
<2> 文件的储存和传输不能是Unicode(只能是utf-8,utf-16,gbk,gbk2312,ascii等)
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‘
(1)= : 赋值
(2)==:比较-----值是否相等
(3)is :比较-----内存地址
(4)id : 内存地址
标签:type inf ascii 大于 char code 中文 内存 数据
原文地址:https://www.cnblogs.com/xc-718/p/9640655.html