午夜视频在线网站,日韩视频精品在线,中文字幕精品一区二区三区在线,在线播放精品,1024你懂我懂的旧版人,欧美日韩一级黄色片,一区二区三区在线观看视频

分享

python2 python3區(qū)別(續(xù))

 印度阿三17 2019-02-15

1.除法

Python2

Python3

int/int → int

int/int → float

  1. python2下整數(shù)除以整數(shù)返回整數(shù)類型,python3下整數(shù)除以整數(shù)返回浮點(diǎn)數(shù)類型
  2. 當(dāng)某些語句假定變量為整數(shù)類型時,上面的區(qū)別會造成python3下的運(yùn)行時錯誤。

建議兼容寫法:

  1. 建議新寫python2腳本時加入from __future__ import division, 這樣Python2的腳本就會與python3行為一致,也返回浮點(diǎn)數(shù)。
  2. 必須使用整數(shù)的地方建議使用類型轉(zhuǎn)換, int(), math.floor(), math.ceil(), floor(), round() 等
  3. 注意向下取整除法運(yùn)算符"http://" 只在兩個操作數(shù)都為整數(shù)時返回整數(shù)類型,否則返回浮點(diǎn)數(shù) x.0, 此運(yùn)算符在python2和python3下行為一致。?

2.數(shù)字

Python2

Python3

int類型的最大值為sys.maxint

int無最大值限制

long類型無最大值

取消long類型,所有整數(shù)為int類型

? ?

常量1L表示long類型的常量

1L為語法錯誤

? ?

八進(jìn)制常量以0或0o開頭

,如0600, 0o600

八進(jìn)制常量只可以用0o開頭,

如0o600

主要兼容問題:

  1. 長整型以及八進(jìn)制常量在Python3的語法錯誤問題
  2. 運(yùn)行時期間Python3找不到long類型

建議兼容寫法:

  1. 八進(jìn)制常數(shù)統(tǒng)一使用0o開頭。
  2. 用if判斷python的版本避免python3運(yùn)行到含long的語句
  3. 判斷變量是否為數(shù)字需要判斷python的版本:isinstance(x, int) or (sys.version_info[0] < 3 and isinstance(x, long)
  4. 不要使用1L之類的數(shù)字常量,Python3下為語法錯誤, 可以使用long(1)來避免語法錯誤

3迭代器

Python2

Python3

def next():

def __next__()

iter.next()

一般不使用此語句

next(iter)

next(iter)

  1. python2與python3定義迭代器的函數(shù)名不一致
  2. python3的內(nèi)置類中不再含有next()方法。

建議兼容寫法:

  1. def next(self):
    ? ? ....

? ? ? ? ? ? ? ....

? ? ? ? ? def __next__(self):

? ? ? ? ? ?? return self.next()

? ?? 2. 如果基類中已經(jīng)按照上面定義了__next__(), 改寫了next()的派生類無需再定義__next__()

? ?? 3. 不要使用iter.next(), 統(tǒng)一使用next(iter), 注意next()全局函數(shù)在python2下調(diào)用類的next()方法,在python3下調(diào)用類的__next()__方法.

4字典

Python2

Python3

dict.keys()返回列表

dict.keys()返回迭代器

dict.iterkeys()返回迭代器

無此語句

dict.items()返回列表

dict.items()返回迭代器

dict.has_key(x)

無此函數(shù)

x in dict

x in dict

建議兼容寫法:

  1. 不使用iterkeys和has_keys
  2. 用 x in dict替代 dict.has_key(x)
  3. 當(dāng)需要把keys(), items() 的值賦給變量,或者作為函數(shù)的返回值的時候建議使用list()轉(zhuǎn)換為列表。

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的語義相同

來源:http://www./content-1-114901.html

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多