zoukankan      html  css  js  c++  java
  • Python3.x对Python2.x的语法变动

    一: print从语句变成函数

    原 print 1,2+3 改成 print(1,2+3)>>>1 5

    二:range与xrange

    原rang(0,4) 结果为列表[0,1,2,3] 改成 list(range(0,4))

    远xrange适用于for循环的变量控制,改成range(0,4)

    三:字符串

    原字符串以8-bit字符串存储,现在改成16-bit Unicode字符存储

    四:try...except

    原 try
        ...
      except Exception,e
        ...
    改成
    try
        ...
      except Exception as e
        ...

    五:打开文件
    原file(...)或open(...),现在只能用后者

    六:从键盘录入一个字符串
    原raw_input("message")改成input('message')

    七:bytes数据类型
    bytes改成”字节数组“对象,每个元素是8-bit的字节,取值范围0~255
    由于python3中字符串是以unicode编码存储,当写入二进制文件时,字符串无法直接写入(或读取),必须以某种方式编码为字节序列后,方可写入

    常用的编码方式:"utf-8","utf-16","gb2312","gbk","ascii","latin1"等,当字符串不能编码为指定的编码方式时,会发生异常

    1:字符串编码(encode)为bytes
    例:s = "张三abc12"
          b=s.encode("utf-8")       
      print(b)>>>输出b'\xe5\xbc\xa0\xe4\xb8\x89abc123'
          print(b.decode("utf-8"))>>>张三abc12

    使用方法举例:

    写入

    #coding=gbk

    f=open("c:\\test.txt","wb")

    s="张三1234abcd"

    #-------------

    #在python2.x中可以这样写:f.write(s)

    #-------------

    b=s.encode("gbk")
    f.write(b)
    f.close()

    input("?")

    读取

    #coding=gbk

    f=open("c:\\test.txt","rb")
    f.seek(0,2)#定位至文件尾
    n=f.tell()#读取文件的字节数
    f.seek(0,0)#重新定位至文件开始处
    b=f.read(n)
    #在python2.x中b是字符串类型,而在python3.0中b是bytes类型。因为需要按指定的编码方式编码
    s=b.decode("gbk")
    print(s)
    f.close()

    2:bytes序列一旦形成是不可更改的,如

    s="ABCD"
    b=s.encode("gbk")
    print (b[0])   #显示65
    b[0]=66 #出错

    八:chr(K)与ord(c)

    chr(K)将编码K转为字符,K的范围是0~255(2.x),3.0中K得范围是:0~65535

    ord(c)取单个字符的编码,返回值范围是0~255(2.x),3.0中c得范围是:0~65535

    九:除法运算符

    2.x >>> 10/3 => 3

    3.0>>>10/3=>3.3333333333333335    10//3=>3

    十:字节数组对象——新增

    1:初始化
    a=bytearray(10)   #a是一个由10个字节组成的数组,其中每个元素是一个字节,类型借用int。此时每个初始值为0

    2:字节数组是可变的

    a=bytearray(10)
    a[0]=25   #可以用赋值语句更改其元素,但所赋的值必须在0~255之间
    转换为list:b=list(a)

    3:字节数组的切片仍然是字节数组

    4:字符串转换成字节数组

    s="你好"
    b=s.encode("gbk")  #先将字符串按某种编码方式(gbk)转换成bytes
    c=bytearray(b)       #再将bytes转化成字节数组
    也可以写作:c=bytearray("你好","gbk")

    5:字节数组转化成字符串

    c=bytearray(4)
     c[0]=65;c[1]=66;c[2]=67;c[3]=68

    >>> s=c.decode("gbk")

    >>> print(s)

    显示:ABCD

    6:字节数组可以用于写入文本文件

    f=open("c:\\test.txt","wb")
    s="张三李四1234abcd"
    b=s.encode("gbk")
    f.write(b)
    c=bytearray("王五","gbk")
    f.write(c)
    f.close()

  • 相关阅读:
    源码实现 --> strcmp
    源码实现 --> strdel
    源码实现 --> strcpy
    SoC的Testbench中的简易bus_monitor(加入print函数)
    debian 安装后需做的几件事
    使用Perl合并文件
    一个简单的Verilog计数器模型
    Environment Modules简单使用
    Git push “fatal: Authentication failed ”
    使用SystemC进行硬件仿真
  • 原文地址:https://www.cnblogs.com/mumue/p/2465258.html
Copyright © 2011-2022 走看看