zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Streams那些事之概述与原理
    ORA12514: ORACLE 监听错误
    使用软件工具插件 备忘
    jquery 弹出遮罩插件 prettyPhoto 参数说明
    SQL 9位随机码
    向上下左右不间断无缝滚动的效果(兼容火狐和IE)[转]
    SQL 将一串字符串转换为列插入临时表
    jQuery插件开发全解析[转]
    DIV+CSS命名规范
    ASP.NET中Session跨站点共享实现方式
  • 原文地址:https://www.cnblogs.com/SharkJiao/p/9352815.html
Copyright © 2011-2022 走看看