1 is 和 == 的区别
- 1> id( )表示我们可以通过它来查到在内存中的地址
s = "alex" print(id(s)) # 2500194320432 lst = [1,2, 4] print(id(lst)) # 2500343404424 lst = [1, 2, 4] # 即使定义两个一样结果的列表,操作系统都会在内存中开辟2块内存地址 print(id(lst)) # 2500343504648 tup = (1, 2) print(id(tup)) # 2500343383880 tup1 = (1, 2) # 元组亦是. print(id(tup1)) # 2500343382728
- 总结:小数据池概念的引入把我们使用过的数据储存在小数据池中,供其他变量使用
- 2> 小数据池包含:int ,str ,bool
- 一般情况下我们定义的字符串都会被放在小数据池中,在使用字符串的时候,python会帮我们把字符串缓存,在下次使用的是后直接只想这个字符串即可,这样可以节省很多空间.
- 3> is 和id( )的联系
- is比较的是id()计算出来的结果,由于,由于id()帮我们查的是数据(内容)的内存地址,那么is就是比较数据(内容)的内存地址
- 最终,我们可以通过is来比较两个数据(内容)是否为同一个对象.
- ==是比较左右两端的数据(内容)是否一样
- is是比较的两个数据(内容)内存地址是否一样
2,编码的补充:
- 在python3中,程序运行阶段,使用的是unicode码,因为是万国码,所以什么码都能识别,所以在使用python3的时候是把unicode的代码转换成UTF-8的代码.
- 内存使用的是unicode,硬盘和网络传输用的是UTF-8或者GBK.
- bytes的表现形式:
- >英文b"alex"英文的表现形式和字符串没有设么区别
- >中文 b'\xe4\xb8\xad'这时一个汉字UYF-8的bytes表现形式
- encode(内容),编码,获取到的是编码之后的结果."bytes".........................格式是.encode("utf-8"或者,"GBK")
- decode(内容),解码,把bytes变成我们熟悉的字符串.................................格式是.decode("utf-8"或者,"GBK")
# utf-8的编码以及解码 s = "中" # 编码: print(s.encode("utf-8")) # b'\xe4\xb8\xad' # 解码: print(b'\xe4\xb8\xad'.decode("utf-8")) # GBK的编码以及解码 s = "中" # 编码: print(s.encode("gbk")) # b'\xd6\xd0' # 解码: print(b'\xd6\xd0'.decode("gbk")) # 中
小结:
- GBK的bytes不能直接转化为UTF-8的bytes,需要先转化为unicode再转化为UTF-8的bytes
- 即.decode("UTF-8")---------.encode("GBK")----------.decode("GBK").