1.除法python
Python2函數 |
Python3spa |
int/int → intci |
int/int → floatit |
建議兼容寫法:io
2.數字table
Python2import |
Python3變量 |
int類型的最大值爲sys.maxint迭代器 |
int無最大值限制 |
long類型無最大值 |
取消long類型,全部整數爲int類型 |
常量1L表示long類型的常量 |
1L爲語法錯誤 |
八進制常量以0或0o開頭 ,如0600, 0o600 |
八進制常量只能夠用0o開頭, 如0o600 |
主要兼容問題:
建議兼容寫法:
3迭代器
Python2 |
Python3 |
def next(): |
def __next__() |
iter.next() |
通常不使用此語句 |
next(iter) |
next(iter) |
建議兼容寫法:
....
def __next__(self):
return self.next()
2. 若是基類中已經按照上面定義了__next__(), 改寫了next()的派生類無需再定義__next__()
3. 不要使用iter.next(), 統一使用next(iter), 注意next()全局函數在python2下調用類的next()方法,在python3下調用類的__next()__方法.
4字典
Python2 |
Python3 |
dict.keys()返回列表 |
dict.keys()返回迭代器 |
dict.iterkeys()返回迭代器 |
無此語句 |
dict.items()返回列表 |
dict.items()返回迭代器 |
dict.has_key(x) |
無此函數 |
x in dict |
x in dict |
建議兼容寫法:
5異常處理
Python2 |
Python3 |
except ImportError, e |
語法錯誤 |
except ImportError as e |
except ImportError as e |
raise ImportError,'msg' |
語法錯誤 |
raise ImportError("msg") |
raise ImportError("msg") |
以上所有使用Python3的寫法, Python2的寫法再也不被Python3支持。Python3的寫法在python2的語義相同