• is和==的区别以及编码和解码


    一.is和==的区别

    python中对象包含的三个基本要素分别是:id(身份标识),type(数据类型),value(值)

    is和==都是对对象进行比较判断的,但对对象比较判断的内容不同.

    ★==是python标准操作符中的比较操作符,用来判断两个对象的value是否相等.

    如: 

    1 a=6/2
    2 b=3
    3 print(a==b)       #True

    ★is也被叫做同一性运算符,这个运算符比较判断的是对象的身份标识(id)是否相同,

    如:

    1 x=[4,5,6]
    2 y=[4,5,6]
    3 print(x is y)    #False 因为x和y的id不同
     1 a=1        #a和b是int型
     2 b=1
     3 print(a is b)   #True
     4 print(id(a))     #1659989008
     5 print(id(b))       #1659989008
     6 
     7 a='qwert'      #a和b是字符串型
     8 b='qwert'
     9 print(a is b)      #True
    10 print(id(a))         #1685772424112
    11 print(id(b))         #1685772424112
    12 
    13 a=(1,2,3,4)       #a和b是元组类型
    14 b=(1,2,3,4)
    15 print(a is b)     #False
    16 print(id(a))      #2761455024344
    17 print(id(b))      #2761455024312
    18 
    19 a=[1,2,3,4]      #a和b是列表类型
    20 b=[1,2,3,4]
    21 print(a is b)     #False
    22 print(id(a))      #2127026092936
    23 print(id(b))      #2127026092948
    24 
    25 a= {'a':1,'b':2}     #a和b是字典类型
    26 b={'a':1,'b':2}
    27 print(a is b)     #False
    28 print(id(a))      #2398891769216
    29 print(id(b))      #2398891769288

    is只有int和str类型的情况下,a is b才是True,其他类型时,a是False.

    同时在int和str类型的时候也有一些限制

    int型小数据池的范围是:-5~256

    字符串中如果有特殊字符,他们的内存地址就不一样

    字符串中单个字符*20以内,他们的内存地址是一样的,*21以上,就不一样

    二.编码和解码

            字符串在Python内部的表示是Unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符解码(decode)成unicode,再从unicode编码(encode)成另一种编码。

    decode('码')     字节  ==>  明文     把括号中的原码转换成unicode中明文

    encode('码')     明文  ==>  字节     把unicode中的明文转换成括号中的原码 

    1 a=("移花接木你肌瘤")             #unicode下的明文
    2 print(a.encode('gbk'))         #把unicode下的明文转换成了gbk下的原码    b'xd2xc6xbbxa8xbdxd3xc4xbexc4xe3xbcxa1xc1xf6'
    3 a1=a.encode('gbk')
    4 print(a1.decode('gbk'))        #把gbk下的原码转换成了unicode下的明文    移花接木你肌瘤
    5 a2=a1.decode('gbk')
    6 print(a2.encode('utf-8'))      #把unicode下的明文转换成了utf-8下的原码  b'xe7xa7xbbxe8x8axb1xe6x8exa5xe6x9cxa8xe4xbdxa0xe8x82x8cxe7x98xa4'
    7 a3=a2.encode('utf-8')
    8 print(a3.decode('utf-8'))      #把utf-8下的原码转换成了unicode下的明文  移花接木你肌瘤
    改变世界,改变自己!
  • 相关阅读:
    头条java 后台一面凉经
    JVM运行时数据区
    基础篇——Spring Cloud Hystrix
    bug篇——idea拉取代码认证失败重新登录
    基础篇——代理模式之SpringAOP
    基础篇——代码优化100条之(11—20)
    电商项目实战(架构八)——RabbitMQ实现延迟消息
    电商项目实战(架构七)——Mongodb实现文档操作
    基础篇——代码优化100条之(1—10)
    电商项目实战(架构六)——Elasticsearch实现商品搜索
  • 原文地址:https://www.cnblogs.com/shanghongyun/p/9407807.html
Copyright © 2020-2023  润新知