版本说明
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方法
新闻热点
疑难解答