python 2.x 3.x 区别

一. 屏幕输出
2.x:
print 1, 2+3
3.x
print(1, 2+3)

二. 屏幕输入
2.x
raw_input( "please input:" )
3.x改为:
input( "please input" )

三. 读文件
2.x: file( ..... )或 open(.....)
3.x改为:只能用 open(.....)

四. 新增bytes和bytearray: bytearray和bytes区别在于,bytearray是可变的,byte不可变
<1>bytes是Python 3中特有的,Python 2 里不区分bytes和str。
Python 2中

type(b'xxxxx')

type('xxxxx')

Python 3中
type(b'xxxxx')

type('xxxxx')

<2>str 使用encode方法转化为 bytes,bytes通过decode转化为str
字符串编码(encode) 为 bytes
例: s = "abc12"
b = s.encode( 编码方式)
# b 就是 bytes 类型的数据,默认是"UTF-8"
# 常用的编码方式为 : "uft-16" , "utf-8", "gbk", "gb2312", "ascii" , "latin1" 等
# 注 : 当字符串不能编码为指定的“编码方式”时,会引发异常
bytes 解码(decode)为字符串
s = "张三abc12"
b = s.encode( "gbk") # 字符串 s 编码为 gbk 格式的字节序列
s1 = b.decode("gbk") # 将字节序列 b以gbk格式 解码为字符串
# 说明,当字节序列不能以指定的编码格式解码时会引发异常

<3>读写二进制文件需编解码(因为原: 字符串以 8-bit 字符串存储改为: 字符串以 16-bit Unicode 字符串存储)
f = open("c:\1234.txt", "wb")
s = "abcd1234"
2x: f.write( s )
但在 python 3.0中会引发异常
3.x改为:
b = s.encode("gbk")
f.write( b )
f.close()

六.除法
2.x 3/2=1
3.0/2=1.5
3.x 3/2=1.5

七. chr(80) 与 ord("b")
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

八:range 与 xrange
2.x : range( 0, 4 ) 结果 是 列表 [0,1,2,3 ]
3.x改为:list( range(0,4) )

2.x : xrange( 0, 4 ) 适用于 for 循环的变量控制
3.x改为:range(0,4)

九:try except 语句的变化
2.x: try:
......
except Exception, e :
......
3.x改为
try:
......
except Exception as e :
......

https://www.cnblogs.com/hanggegege/p/5840005.html
https://www.cnblogs.com/cuchadanfan/p/5926069.html

你可能感兴趣的:(python 2.x 3.x 区别)