• Python学习


    1、Python2和Python3的区别

      Python2

        print('abc')  print 'abc'

        range()     xrange()生成器

        raw_input()

      Python3

        print('abc')

        range()

        input()

    2、Python小数据池

      is  比较,比较的是内存地址  id(内容)

    li1 = [1,2,3]
    li2 = li1
    li3 = li2
    print(id(li1),id(li2))
    
    # 1829389950088 1829389950088

      数字,字符串与小数据池

        数字的范围  -5~256

        字符串  1)不能有特殊字符

             2)s*20 还是同一个地址,s*21以后都是两个地址

    i1 = 6
    i2 = 6
    print(id(i1),id(i2))
    i3 = 300
    i4 = 300
    print(id(i3),id(i4))

      剩下的小数据池(list dict tuple set)

        不存在小数据池

    l1 = [1,]
    l2 = [1,]
    print(l1 is l2)

    3、编码问题

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

      在Python3中,str 在内存中是用unicode编码。

      bytes数据类型:

        在Python3以后,字符串和bytes类型彻底分开了。字符串是以字符为单位进行处理的,bytes类型是以字节为单位处理的。

        bytes数据类型在所有的操作和使用甚至内置方法上和字符串数据类型基本一样,也是不可变的序列对象。

        bytes对象只负责以二进制字节序列的形式记录所需记录的对象,至于该对象到底表示什么(比如到底是什么字符)则由相应的编码格式解码所决定。

        Python3中,bytes通常用于网络数据传输、二进制图片和文件的保存等等。

        可以通过调用bytes()生成bytes实例,其值形式为 b'xxxxx',其中 'xxxxx' 为一至多个转义的十六进制字符串(单个 x 的形式为:x12,其中x为小写的十六进制转义字符,12为二位十六进制数)组成的序列,每个十六进制数代表一个字节(八位二进制数,取值范围0-255),对于同一个字符串如果采用不同的编码方式生成bytes对象,就会形成不同的值.

      str类型与bytes类型对比:

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

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

    b = b''         # 创建一个空的bytes
    b = byte()      # 创建一个空的bytes
    b = b'hello'    #  直接指定这个hello是bytes类型
    b = bytes('string',encoding='编码类型')  #利用内置bytes方法,将字符串转换为指定编码的bytes
    b = str.encode('编码类型')   # 利用字符串的encode方法编码成bytes,默认为utf-8类型
    
    bytes.decode('编码类型'):将bytes对象解码成字符串,默认使用utf-8进行解码。
    View Code
    s0 = 'alex'
    s1 = b'alex'
    print(s0,type(s0))
    print(s1,type(s1))

    4、编码与解码

      encode():编码,将str --> bytes

      becode():  解码,将bytes --> str

    s1 = 'alex'
    s11 = s1.encode('utf-8')
    s11 = s1.encode('gbk')
    print(s11)
    s2 = '中国'
    s22 = s2.encode('utf-8')
    s22 = s2.encode('gbk')
    print(s22)

      对于bytes,我们只要知道在Python3中某些场合下强制使用,以及它和字符串类型之间的互相转换,其它的基本照抄字符串。

      简单的省事模式:

        string = b'xxxxx'.becode()  直接以默认的utf-8编码解码bytes成string

        b = string.encode()  直接以默认的utf-8编码string为bytes

  • 相关阅读:
    都说程序员钱多空少,程序员真的忙到没时间回信息了吗?
    C/C++知识分享: 函数指针与指针函数,看完这篇你还能不懂?
    C++的那些事儿:从电饭煲到火箭,C++无处不在
    年薪90万程序员不如月入3800公务员?安稳与高收入,到底如何选择?
    【C++学习笔记】C++ 标准库 std::thread 的简单使用,一文搞定还不简单?
    C语言既有高级语言又有低级语言的特点,但为什么它不是低级语言呢?
    【C++学习笔记】看完这篇,C++ 的链接问题不怕你搞不明白!
    既然C++这么难学,为什么还有人“自讨苦吃”?
    编程语言这么多,为什么就只有C 语言能一直得到 SQLite 的青睐?
    初学者疑惑:C语言中,函数反复调用会有什么问题?
  • 原文地址:https://www.cnblogs.com/SharkJiao/p/9352815.html
Copyright © 2020-2023  润新知