和 Python 2.x 版本相比,Python 3.x 版本在语句输出、编码、运算和异常等方面做出了一些调整,本节就对这些调整一一做一下简单介绍。
本节适合有 Python 基础的学员阅读,初学者可先跳过本节,整体学完 Python 之后,再回过头来阅读。
Python 3.x print函数代替了print语句
在 Python2.x 中,输出数据使用的是 Print 语句,例如:
>>> print "3,4" 3,4 或者 >>> print(3,4) (3,4)
但是在 Python 3.x 中,print 语句没有了,取而代之的是 print 函数,例如:
>>> print(3,4) 3 4
如果还像 Python 2.x 中那样使用 print 语句,Python 编译器就会报错,例如:
>>> print "3,4" File "<stdin>", line 1 print "3,4" ^ SyntaxError: Missing parentheses in call to 'print'
Python 3.x 默认使用 UTF-8 编码
相比 Python 2.x 默认采用的 ASCII 编码,Python 3.x 默认使用 UTF-8 编码,可以很好地支持中文或其它非英文字符。
例如,输出一句中文,使用 Python 2.x 和 Python 3.x 的区别如下:
#Python 2.x >>>str ="华尔子博" >>>str 'Cxe8xafxadxe8xa8x80xe4xb8xadxe6x96x87xe7xbdx91' #Python 3.x >>>str ="华尔子博" >>>str '华尔子博'
不仅如此,在 Python 3.x 中,下面的代码也是合法的:
>>>中国="China" >>>print(中国) China
Python 3.x 除法运算
和其他语言相比,Python 的除法运算要高端很多,它的除法运算包含 2 个运算符,分别是 / 和 //,这 2 个运算符在 Python 2.x 和 Python 3.x 的使用方法如下:
/ 运算符
在 Python 2.x 中,使用运算符 / 进行除法运算的方式和 Java、C 语言类似,整数相除的结果仍是一个整数,浮点数除法会保留小数点部分,例如:
>>>1/2 0 >>>1.0/2 0.5
但是在 Python 3.x 中使用 / 运算符,整数之间做除法运算,结果也会是浮点数。例如:
>>>1/2 0.5
运算符 //
使用运算符 // 进行的除法运算叫做 floor 除法,也就是输出不大于结果值的一个最大的整数(向下取整)。此运算符的用法在 Python 2.x 和Python 3.x 中是一样的,举个例子:
#Python 2.x >>> -1//2 -1 #Python 3.x >>> -1//2 -1
Python 3.x 异常
在 Python 3.x 版本中,异常处理改变的地方主要在以下几个方面:
- 在 Python 2.x 版本中,所有类型的对象都是直接被抛出的,但是在 Python 3.x 版本中,只有继承 BaseException 的对象才可以被抛出。
- 在 Python 2.x 版本中,捕获异常的语法是“except Exception,var:”;但在 Python 3.x 版本中,引入了 as 关键字,捕获异常的语法变更为 “except Exception as var:”。
- 在 Python 3.x 版本中,处理异常用 “raise Exception(args)”代替了“raise Exception,args”。
- Python 3.x 版本中,取消了异常类的序列行为和 .message 属性。
有关 Python 2.x 版本和 Python 3.x 版本处理异常的示例代码如下所示:
#Python 2.x >>> try: ... raise TypeError,"类型错误" ... except TypeError,err: ... print err.message ... 类型错误 #Python 3.x >>> try: ... raise TypeError("类型错误") ... except TypeError as err: ... print(err) ... 类型错误
Python 3.x 八进制字面量表示
在 Python 3.x 中,表示八进制字面量的方式只有一种,并且必须写成“0o1000”这样的方式,原来“01000”的方式不能使用了。举个例子:
#Python 2.x >>> 0o1000 512 >>> 01000 512 #Python 3.x >>> 01000 File "<stdin>", line 1 01000 ^ SyntaxError: invalid token >>> 0o1000 512
Python 3.x 不等于运算符
Python 2.x 中的不等于运算符有 2 种写法,分别为 != 和 <>,但在 Python 3.x 中去掉了 <>,只有 != 这一种写法,例如:
#Python 2.x >>> 1!=2 True >>> 1<>2 True #Python 3.x >>> 1!=2 True >>> 1<>2 File "<stdin>", line 1 1<>2 ^ SyntaxError: invalid syntax
Python 3.x 数据类型
Python 3.x 中对数据类型也做了改动,比如说:
- Python 3.x 去除了 long 类型,现在只有一种整形 int,但它的行为就像是 Python 2.x 版本中的 long。
- Python 3.x 新增了 bytes 类型,对应 Python 2.x 版本的八位串,定义 bytes 字面量的方法如下所示:>>>b=b’China’
>>>type(b)
<type ‘bytes’>字符串对象和 bytes 对象可以使用 .encode() 或者 .decode()方法相互转化,例如:>>>s=b.decode()
>>>s
‘China’
>>>b1=s.encode()
>>>b1
b’China’ - Python 3.x 中,字典的 keys()、items() 和 values() 方法用返回迭代器,且之前的 iterkeys() 等函数都被废弃。同时去掉的还有 dict.has_key(),改为用 in 替代。
本节所介绍的只是 Python 3.x 的一部分改动,由于篇幅有限,这里不再具体指出,教程中涉及到时再给大家详细介绍。
联系信息:邮箱aoxolcom@163.com或见网站底部。
请登录后发表评论
注册
社交帐号登录