python-编码
Posted v-yure
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python-编码相关的知识,希望对你有一定的参考价值。
#id(变量),返回变量的内存地址
# is 和 == 的区别
#is判断的是内存地址, == 判断内容.
# 小数据池(常量池):把我们使用过的值存放在小数据池中,供其他变量是用.
#小数据池中放的是数字和字符串类型的数据,其他数据类型不存放.
#对于数字: -5~256会被添加到小数据池中,每次使用都是同一个对象.
#对于字符串:
# 1.如果是纯文字和下划线,那么会被添加到小数据池中.
# 2.如果带有特殊字符的,不会被添加到小数据池中,每次都是新的对象
# 3.如果是单一字母*n的情况,‘a‘*20,在20个单位内是可以被添加的,超过20个就不会被添加.
# s = "alex"
# s1 = s
# print(id(s), id(s1))
# lst = [1,2,3]
# lst1 = lst
# print(id(lst), id(lst1)) #两个变量指向同一个内存地址所以相等
# s = "alex"
# print(s is s1) #True
# print(s == s1) #True
# print(id(s),id(s1)) #由于s和s1所指向的都是alex,而alex是字符串常量所以会被添加到小数据池中,所以s和s1指向的是同一对象.
#
# lst = [1,2,3]
# lst1 = lst
# lst.append("hehe")
# print(lst) #由于lst和lst1指向的是同一对象,那么lst和lst1最终结果是相同的.
# print(lst1)
# lst = [1,2,3]
# lst1 = [1,2,3]
# print(lst is lst1) #False
# print(lst == lst1) #True
# print(id(lst),id(lst1)) #lst和lst1所指向的不是同一对象,所以内存地址不一样.
#编码:
# ASCII: 1Byte 8Bit.
# GBK: 2Byte 16Bit
# UNICODE: 4Byte 32Bit
#UTG-8是unicode的升级版.
#UTF-8: 英文:1Byte 中文:3Byte
#传输过程中:UTF-8和GBK.Unicode浪费资源
#内存中我们程序运行过程中编码是unicode
#转换时GBK不能和UTF-8互相转换
#在程序中,字符串可以编码成bytes类型的数据,编码encode().
#编码之后的结果和原来的其实是同一个东西,只是看着不一样.
s = "a"
i = "1"
b = "你"
print(s.encode("UTF-8"))
print(i.encode("UTF-8"))
print(b.encode("UTF-8"))
print("-----------")
print(s.encode("GBk"))
print(i.encode("GBK"))
print(b.encode("GBK"))
以上是关于python-编码的主要内容,如果未能解决你的问题,请参考以下文章