首页 > 编程 > Python > 正文

深入浅析Python2.x和3.x版本的主要区别

2020-02-15 23:51:40
字体:
来源:转载
供稿:网友

版本说明

Python 3.0在设计的时候没有考虑向较早版本相容

Python 2.6作为一个过渡版本,基本使用了Python 2.x的语法和库,同时考虑了向Python 3.0的迁移,允许使用部分Python 3.0的语法与函数。
 

除非为了使用旧的Python2.x项目代码或只支持2.x的第三方库,否则不推荐使用2.x进行编程

死人的print函数

Python 2.6与Python 2.7里面,以下三种形式是等价的:

print "fish"print ("fish") #注意print后面有个空格print("fish") #print()不能带有任何其它参数

但python3.x只能使用后两者,print语句被python3废弃,只能使用print函数

Unicode

Python3中字符串是Unicode (utf-8)编码,支持中文做标识符。

python2中是ASCII编码,需要更改字符集才能正常支持中文,所以在.py文件中会看到#-- coding: UTF-8 --。

#python3中>>> 中国 = 'china' >>>print(中国) china#python2中>>> str = "我爱北京天安门">>> str'/xe6/x88/x91/xe7/x88/xb1/xe5/x8c/x97/xe4/xba/xac/xe5/xa4/xa9/xe5/xae/x89/xe9/x97/xa8'>>> str = u"我爱北京天安门">>> stru'/u6211/u7231/u5317/u4eac/u5929/u5b89/u95e8'

除法运算

单斜杠/,Python2中整数相除得整数,浮点小数相除得浮点;Python3中结果总是浮点数。

#python3>>print(10/5)2.0

双斜杠//,Python2和3相同,都是除法结果去掉小数部分

>>print(10//3)3

异常处理

Python2中try:...except ERR,e:...,在Python3中改为了try:...except ERR as e:...#Python3try: open('a.txt','r')except Exception as e: print(e) #这里也不要使用e.message

python 2中触发异常可以用raise IOError, "file error"或raise IOError("file error")两种方式。

python 3中触发异常只能用raise IOError("file error")。 

 异常StandardError 被Python3废弃,统一使用Exception

xrange和range

Python3中不再使用xrange方法,只有range方法

range在Python2中返回列表,而在Python3中返回range可迭代对象

a=range(10)print(a)print(list(a))

输出

range(0, 10)[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

八进制字面量

Python3中只能使用0o...格式,对于01000格式将抛出错误,而在Python2中两种都能使用

>>> 01000 File "<stdin>", line 1 01000  ^SyntaxError: invalid token>>> 0o1000512

不等运算符

在Python2中有两个不等运算符!=和<>,在Python3中去掉了<>,只有!=符号表示不等。

repr

在Python2中双反引号``可以替代repr函数,在Python3中去掉了双反引号的表是方法,只能用repr方法

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表