当前位置: 移动技术网 > IT编程>脚本编程>Python > day06

day06

2019年05月15日  | 移动技术网IT编程  | 我要评论

一切皆因你而关注,五感图剧情,手提电脑报价

1、小知识点汇总

1 # 赋值后的地址是一样的
2 li1 = [1,2,3]
3 li2 = li1
4 print(li1 is li2)# is 用于判断li1的地址是否和li2的地址一样,结果输出为true
5 print(id(li1))# id()用于输出地址
6 print(id(li2))
7 # 2440684855944
8 # 2440684855944

  在python3中,有小数据池的概念,凡是数字在-5到256之间,他们都共用一个地址,目的是为了节省空间,由于pycharm的机制原因,不能体现出这种变化,所以我在cmd中实现。

2、编码讲解

  以下是各个编码对a和中的表示。注意以下二进制的表示都是随意设置,并无根据,只是为了方便做笔记。

  ascll码 

    a : 00000010  8位  一个字节

  unicode

    a : 00000000 00000001 00000010 00000100  32位  四个字节
    中: 00000000 00000001 00000010 00000110  32位  四个字节

  utf-8

     a : 00100000  8位  一个字节

    中: 00000001 00000010 00000110  24位  三个字节


  gbk

     a : 00000110  8位  一个字节
    中 : 00000010 00000110  16位  两个字节

  在python2和python3中:

    1,各个编码之间的二进制,是不能互相识别的,会产生乱码。
    2,文件的储存,传输,不能是unicode(只能是utf-8、utf-16、gbk、gb2312、ascll等)

  在python3中:

    str 在内存中是用unicode编码。python 3最重要的新特性之一是对字符串和二进制数据流做了明确的区分。文本总是unicode,由str类型表示,二进制数据则由bytes类型表示。

  数据的存储和传输,只能由bytes类型进行。

  对于英文:
  str :表现形式:s = 'alex'
  编码方式: 010101010  unicode
  bytes :表现形式:s = b'alex'
  编码方式: 000101010  utf-8、gbk。。。。

1 s = 'alex'
2 s1 = b'alex'
3 print(s,type(s))
4 print(s1,type(s1))
5 # result:
6 # alex <class 'str'>
7 # b'alex' <class 'bytes'>

  对于中文:

  str :表现形式:s = '中国'

  编码方式: 010101010  unicode

  bytes :表现形式:s = b'\xe4\xb8\xad\xe5\x9b\xbd'    

1 s = '中国'
2 print(s,type(s))
3 b = bytes(s,encoding='utf-8')
4 print(b)

  可以看出这里是用utf-8编码,utf-8是三个字节,中国两个字就有六个字节,故表现形式里面就有了六个。

1 s = '中国'
2 print(s,type(s))
3 b = bytes(s,encoding='gbk')
4 print(b)

  在这里用的是gbk编码,故他的结果是四个:b'\xd6\xd0\xb9\xfa'

  编码方式: 000101010  utf-8 gbk。。。。

  

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网