编码转化

id查询内存地址。
name = 'alex'
print(id(name))
name1 = 'alex'
name2 = 'alex'
print(name1==name2)
'='赋值运算   ‘==’比较数值相同
is  内存地址是否相同
小数据池。int  str 在一定范围内,如果两个数值相同,为了节省内存,共用一个内存地址。
int:  -5~256
str:1只包含数字或者字母元素,有非字母元素就不是小数据池。
      2.单个字母* int(<21)存在小数据池。
剩下的类型都不存在
1.不同的密码本之间的二进制是不能互相识别的,容易报错或者产生乱码。
2.计算机的文件存储和传输都是0101010(gbk,utf-8,ascii.gb2312等)不能是unicode.
大前提:python3x,编码。
   数据类型:
            int
             str
             bytes:str拥有的所有方法,bytes都有。
             bool       
             list
              tuple
              dict
              set
python3x   内存中的编码方式是unicode
         英文:
              str:表现形式  name = "alex"
                   内部编码:unicode
               bytes:表现形式:name1 = b"alex"
                        内部编码:非unicode
       中文:
             str:表现形式   name = "中国“
                   内部编码:unicode
              bytes:表现形式:b'xe4xb8xadxe5x9bxbd'
                        内部编码:非unicode 
bytes与str如何转化
str-------->bytes
         b1=str.encode('utf-8')
bytes------->str
           s1=bytes.decode('utf-8')   
str ---> bytes
s1 = '中国'
b1 = s1.encode('utf-8')  # encode 编码
# b2 = s1.encode('gbk')
# print(b1)
# print(b2)
s2 = b1.decode('utf-8') # decode 解码
print(s2)
utf-8 bytes  ---> gbk bytes
s1 = b"alex"
print(s1.capitalize())          
python3为什么存在bytes类型?(默写)
文件的下载与传输都是str类型,str的编码方式是unicode,bytes的编码方式是utf-8,机器识别不了unicode,而bytes又是类似于str的类型,
所以str先转化成bytes类型,在进行文件的传输与下载。



原文地址:https://www.cnblogs.com/ls13691357174/p/9095863.html