is 和 == 区别 编码的问题 id()函数

2018-08-03 07:36:11来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

一丶is 和 == 的区别

  == 比较的是值

  is 比较的是内存地址

#字符串
a = "abc"
b = "abc"
print(a == b)
print(a is b)

#数字
a = 123
b = 123
print(a == b)
print(a is b)

 

# 字典
a = {"a":1,"b":2,"c":3}
b = {"a":1,"b":2,"c":3}
print(a == b)
print(a is b)
print(id(a))
print(id(b))

#元组
a = (1,"a","b")
b = (1,"a","b")
print(a == b)
print(a is b)
print(id(a))
print(id(b))

 

#列表
a = [1,"a","b"]
b = [1,"a","b"]
print(a == b)
print(a is b)
print(id(a))
print(id(b))

 

二丶id() 和小数据池

  id()是查看内存地址的

a = 123
print(id(a))

?数据池(常量池): 把我们使?过的值存储在?数据池中.供其他的变量使?.

注:在python中一般的字符串都是会被缓存的,为了节约内存

?数据池给数字和字符串使?, 其他数据类型不存在

对于数字: -5~256是会被加到?数据池中的. 每次使?都是同?个对象.
对于字符串:

  1. 如果是纯?字信息和下划线. 那么这个对象会被添加到?数据池

  2. 如果是带有特殊字符的. 那么不会被添加到?数据池. 每次都是新的

  3. 如果是单?字?*n的情况. 'a'*20, 在20个单位内是可以的. 超过20个单位就不会添加到?数据池中

三丶编码的补充

  ascii 码:

     不支持中文

     支持 英文 数字 符号

     8位   一个字符

  gbk码  国标码:

     支持 中文,英文,数字,符号

     英文  16位  二个字节

     中文  16位  二个字节

  unicode  万国码:

     支持 中文,英文,数字,符号

     英文 32位  四个字节

     中文 32位  四个字节

  utf-8  长度可变的万国码 :

     最少用8位

     英文  8位 一个字节

     中文  24位  三个字节

  Python3中 程序运行阶段 使用的是unicode  显示所有的内容

  bytes类型

    传输和存储都是使用bytes

  pycharm  存储的时候默认是使用utf-8

 编码和解码:

  encode(编码方式) -----拿到明文编码后对应的字节

  decode(编码方式) -----将编码后的字节解码成对应的明文

s = "饿了吗"
s1 = s.encode("utf-8") #编码  encode(XXX)  XXX是指要编码的类型
print(s1)
s2 = s1.decode("utf-8") #解码  decode(XXX)  XXX是指要解码的类型
print(s2)

  注意:用什么进行编码就要用什么进行解码  不然会解不开

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:day1

下一篇:Day1作业编写用户登陆接口