is和==的区别,小数据池,编码

本文详细解析了Python中is与==的区别,包括它们如何比较对象的内存地址与内容,以及介绍了Python中的编码方式,如UTF-8与GBK的编码解码过程。

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( )的联系
    1. is比较的是id()计算出来的结果,由于,由于id()帮我们查的是数据(内容)的内存地址,那么is就是比较数据(内容)的内存地址
    2. 最终,我们可以通过is来比较两个数据(内容)是否为同一个对象.
    3. ==是比较左右两端的数据(内容)是否一样
    4. is是比较的两个数据(内容)内存地址是否一样

2,编码的补充:

  • 在python3中,程序运行阶段,使用的是unicode码,因为是万国码,所以什么码都能识别,所以在使用python3的时候是把unicode的代码转换成UTF-8的代码.
  • 内存使用的是unicode,硬盘和网络传输用的是UTF-8或者GBK.
  • bytes的表现形式:
    1. >英文b"alex"英文的表现形式和字符串没有设么区别
    2. >中文  b'\xe4\xb8\xad'这时一个汉字UYF-8的bytes表现形式
    3. encode(内容),编码,获取到的是编码之后的结果."bytes".........................格式是.encode("utf-8"或者,"GBK")
    4. 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").

转载于:https://www.cnblogs.com/ljc-0923/p/9288838.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值