20180709

本文详细解析了Python中is与==的区别,并介绍了内存管理的概念,包括如何通过id()查看对象的内存地址以及整数、字符串和布尔类型的对象是如何被缓存的。此外,还深入探讨了字符串编码和解码的过程,特别是如何在不同编码格式(如UTF-8和GBK)之间转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.is与 == 的区别

⑴ id    内存地址

例如:

  s = "alex 是 xxx"

  abc = id(s)

  print(abc)              ==> 得到内存地址

例如:lst = ["周杰伦","AB"]

  lst1=["周杰伦","AB"]                              ==> 字典.列表.元组都没有小数据池

  print(id(lst))                            ==>这两个打印出来的地址不一样

  print(id(lst1))

例如:s = 'AB'

  s1 = 'AB'                            整数(int).字符串(str).布尔(bool)都有小数据池,   小数据池会对字符串进行缓存,为了节省内存

  print(s)                         ==>内存地址一样

  print(s1)

⑵ ==    判断左右两端是否相等和一致        比较的是内容

⑶is判断    判断的内存地址    id()的值来判断

例如:s = "alex"

  s1="alex"

  print(s == s1)                ==>  True

  print(s is s1)                 ==>True     (小数据池)

二.内存里用的是unicode  硬盘和网络传输用的是UTF-8和GBK

⑴encode

例如:s = "李嘉诚的儿子"                              想要存储,必须进行编码

  bs = s.encode("UTF-8")                       #encode    编码之后的内容是bytes类型的数据

  #把字符串编码成UTF-8形式

  #英文:编码之后的结果是英文本身

  #中文:编码之后   UTF-8    一个中文   3个字节

例如:s = "饿了吗"

  bs = s.encode("GBK")                     ==>GBK:一个中文,2个字节

⑵decode     解码(用什么编码就用什么解码)             把bytes编程我们熟悉的字符串

例如:bs = b'\xb6\xf6\xc1\xc6\xc3\xb4'

  bs.decode("GBK")                      ==>解码之后是字符串

例如:GBK ==>UTF-8

  bs = b'\xb6\xf6\xc1\xc6\xc3\xb4'

  #先解码成unicode

  s = bs.decode('GBK')

  #把字符串编码成UTF-8

  bss = s.encode("UTF-8")

  print(bss)

 

转载于:https://www.cnblogs.com/lhy979/p/9284250.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值