【转自:】http://hi.baidu.com/autoitcn/blog/item/5f41973294b5fc4fac4b5f77.htmlhtml
补充:python
2.0 print u ‘ip’ =》 3.0 print("ip")编程
2.0 urllib2 => urllib.request 或者urllib.parse数组
2.0 raw_input=>input函数
python 2.4 与 python 3.0 的比较编码 1、 print 从语句变为函数url 原: print 1, 2+3code 改成: print ( 1, 2+3 )htm 2、range 与 xrange对象 原 : range( 0, 4 ) 结果 是 列表 [0,1,2,3 ] 改成:list( range(0,4) ) 原 : xrange( 0, 4 ) 适用于 for 循环的变量控制 改成:range(0,4) 3、字符串 原: 字符串以 8-bit 字符串存储 改成: 字符串以 16-bit Unicode 字符串存储
4、try except 语句的变化 原: try: ...... except Exception, e : ...... 改成 try: ...... except Exception as e : ...... 5、打开文件 原: file( ..... ) 或 open(.....) 改成: 只能用 open(.....) 6、从键盘录入一个字符串 原: raw_input( "提示信息" ) 改成: input( "提示信息" ) 7、bytes 数据类型
A bytes object is an immutable array. The items are 8-bit bytes, represented by integers in the range 0 <= x < 256. bytes 能够当作是“字节数组”对象,每一个元素是 8-bit 的字节,取值范围 0~255。 因为在 python 3.0中字符串以 unicode 编码存储,当写入二进制文件时,字符串没法直接写入(或读取),必须以某种方式的编码为字节序列后,方可写入。 (一)字符串编码(encode) 为 bytes 例: s = "张三abc12" b = s.encode( 编码方式) # b 就是 bytes 类型的数据 # 经常使用的编码方式为 : "uft-16" , "utf-8", "gbk", "gb2312", "ascii" , "latin1" 等 # 注 : 当字符串不能编码为指定的“编码方式”时,会引起异常 (二) bytes 解码(decode)为字符串 s = "张三abc12" b = s.encode( "gbk") # 字符串 s 编码为 gbk 格式的字节序列 s1 = b.decode("gbk") # 将字节序列 b以gbk格式 解码为字符串 # 说明,当字节序列不能以指定的编码格式解码时会引起异常 (三)使用方法举例 #coding=gbk f = open("c:\\1234.txt", "wb") input("?") 读取该文件的例子: #coding=gbk f = open("c:\\1234.txt", "rb") 运行后应显示: 张三李四abcd1234
(四) bytes序列,一但造成,其内容是不可变的 例: s="ABCD" b=s.encode("gbk") print b[0] # 显示 65 b[0] = 66 # 执行该句,出现异常: 'bytes' object does not support item assignment
8、 chr( K ) 与 ord( c ) python 2.4.2之前 chr( K ) 将编码K 转为字符,K的范围是 0 ~ 255 ord( c ) 取单个字符的编码, 返回值的范围: 0 ~ 255 python 3.0 chr( K ) 将编码K 转为字符,K的范围是 0 ~ 65535 ord( c ) 取单个字符的编码, 返回值的范围: 0 ~ 65535 9、 除法运算符 python 2.4.2之前 10/3 结果为 3 python 3.0 10 / 3 结果为 3.3333333333333335 10 // 3 结果为 3 10、字节数组对象 --- 新增 (一) 初始化 a = bytearray( 10 ) # a 是一个由十个字节组成的数组,其每一个元素是一个字节,类型借用 int # 此时,每一个元素初始值为 0 (二) 字节数组 是可变的 a = bytearray( 10 ) a[0] = 25 # 能够用赋值语句更改其元素,但所赋的值必须在 0 ~ 255 之间 (三) 字节数组的切片还是字节数组 (四) 字符串转化为字节数组 #coding=gbk s ="你好" b = s.encode( "gbk") # 先将字符串按某种“GBK”编码方式转化为 bytes c = bytearray( b ) #再将 bytes 转化为 字节数组 也能够写做 c = bytearray( "你好", "gbk")
(五) 字节数组转化为字符串 c = bytearray( 4 ) c[0] = 65 ; c[1]=66; c[2]= 67; c[3]= 68 s = c.decode( "gbk" ) print ( s ) # 应显示: ABCD
(六) 字节数组可用于写入文本文件 #coding=gbk f = open("c:\\1234.txt", "wb") f.write( b ) input("?") |
RookieDong的补充
1,“import thread”问题,2.x中的模块thread在3.x中编程"_thread"(须要在前面加一个下划线).不然会出现“ImportError: No module named thread