is 与 == 的区别

一. is 和 ==  的区别

     首先由  ID()    可以看出来的问题:

s = 'bowen'   
print(id(s))  #  2971642147704

 

s = 'bowen'  
 print(id(s))  #  2971642147704

 

  从这能看出来字符串两次输出的地址都是相同的

li = [1,'nihao',2]
print(id(li))                 #   2817879148680
li = [1,'nihao',2]
print(id(li))                 #   2817879149384

        从这看出来列表的地址是不同的

   总结:字符串的都是一样的.然而列表的地址就不一样.

     字符串主要是有小数据池(也叫常量池),字符串是通过小数据池存一个数据,当你在打印同一数据时,如果之前存在现在输入的字符串或是整数,那么取出的值是与之前的值是同一位置,这是小数据池的存在意义.

         ==  双等表示内容是否相等

 

       区别:    is  主要 比较的是地址

             ==主要比较的是值

 

  二.  编码的补充

        1.Python3.内存使用的是Unicode码

        2.Python2.使用的是ASCII码

        3.ASCII.是最早的编码.里面有英文大写字母,小写字母,数字,特殊的字符,不能识别中文,

              8bit   1个byte

         4.gbk码.中国国标码   16bit   2个字节

         5.Unicode码.万国码    32bit   四个字节

         6.utf-8码.俗成长度可变的万国码

                    1.英文:  8bit   1byte

                    2.欧洲文字:   16bit   2byte

                    3.中文:         32bit    3byte

        以上的所述;除了ASCII码以外,都不能直接转换.

        三.bytes的表现形式

               1.   英文   b'byte'  英文的表现形式与字符串相似.

               2.   中文  b'\xe4\xb8\xad'

       字符串在传输时转换成byes=>  encode来完成

          

s = "alex"
print(s.encode("utf-8"))
print(s.encode("GBK"))

结果:
      b'alex'
      b'alex'

s = "" 
print(s.encode("UTF-8"))
print(s.encode("GBK"))

结果:
    b'\xe4\xb8\xad' 
    b'\xd6\xd0

注意:英文编码之后的结果和原字符串一致,中文编码之后根据编码的不同,编码的效果也不同

英文所有的编码都适用于英文,英文都是 8bit  一个字节  而中文是在不同的编码中显示的雅诗不同的

      编码后的的类型是bytes类型的.在网上传输和存储也是bytes类型的.在接受是也应是bytes类型的,这时候可以用decode()来进行解码操作.八bytes类型转化为字符串类型:

      

s = "我叫李李嘉诚" print(s.encode("utf-8"))



这是编码过程:
b'\xe6\x88\x91\xe5\x8f\xab\xe6\x9d\x8e\xe5\x98\x89\xe8\xaf\x9a'


这是解码过程:
print  (b'\xe6\x88\x91\xe5\x8f\xab\xe6\x9d\x8e\xe5\x98\x89\xe8\xaf
         \x9a'.decod e("utf-8"))

 

每天五个学习中的英文单词:

       1.capitalize   首位字母大写;

s = 'abc'
s1 = s.capitalize()
print(s1)

       2.upper          全部变大写;

s = 'abc'
s1 = s.upper()
print(s1)

 

       3.lower           全部小写;

s = 'ABC'
s2 = lower()
print(s2)

       4.encode    编译

s = '刘博文'
s1 = s.encode('utf-8')
print(s1)

结果:
b'\xe5\x88\x98\xe5\x8d\x9a\xe6\x96\x87'

 

       5.decode   解码

s = '你好'
print(s.encode('utf-8'))

结果:
s1 = b'\xe4\xbd\xa0\xe5\xa5\xbd'


print(s1.decode('utf-8'))
 
结果:   
    你好

 

 

 

 

      

 

     

           

posted @ 2018-07-10 15:41  7411  阅读(135)  评论(0)    收藏  举报