四虎国产精品永久地址998_chinesexxx少妇露脸_日本丁香久久综合国产精品_一区二区久久久久_四虎av影视_久久久久国产一区二区三区不卡

中培偉業IT資訊頻道
您現在的位置:首頁 > IT資訊 > 軟件研發 > 腳本相同時Python2和Python3如何兼容?

腳本相同時Python2和Python3如何兼容?

2020-07-06 12:01:07 | 來源:中培企業IT培訓網

程序開發人員經常遇到的問題是,有很多開發人員都在使用一個非常知名的Python模塊,但是并非所有人都只使用Python 2或Python3。這時您有兩個選擇,第一種方法是開發兩個模塊,一個用于Python2,一個用于Python3;另一種方法是調整當前代碼,使其與Python2和Python3兼容。本文將介紹一些方法,使您的腳本與Python2和Python3兼容。

  Future模塊導?

這也是最重要的?法,就是導?__future__模塊。它可以幫你在Python2中導?Python3的功能。這有?組例?。上下?管理器是Python2.6+引?的新特性,如果你想在Python2.5中使?它可以這樣做:

from __future__ import with_statement

在Python3中print已經變為?個函數。如果你想在Python2中使?它可以通過__future__導?:

print

# Output:

from __future__ import print_function

print(print)

# Output:

模塊重命名

?先,?多時候我們會這樣在腳本中導?模塊:

import foo

# or

from foo import bar

其實你也可以這樣做:

import foo as foo

這樣做可以起到和上?代碼同樣的功能,但最重要的是它能讓你的腳本同時兼容Python2和Python3。現在我們來看下?的代碼:

try:

import urllib.request as urllib_request # for Python 3

except ImportError:

import urllib2 as urllib_request # for Python 2

稍微解釋?下上?的代碼。我們將模塊導?代碼包裝在try/except語句中。我們是這樣做是因為在Python 2中并沒有urllib.request模塊。這將引起?個ImportError異常。?在Python2中urllib.request的功能則是由urllib2提供的。所以,當我們試圖在Python2中導?urllib.request模塊的時候,?旦我們捕獲到ImportError我們將通過導?urllib2模塊來代替它。

最后,你要了解as關鍵字的作?。它將導?的模塊映射到urllib.request,所以我們通過urllib_request這個別名就可以使?urllib2中的所有類和?法了。

過期的Python2內置功能

另?個需要了解的事情就是Python2中有12個內置功能在Python3中已經被移除了。要確保在Python2代碼中不要出現這些功能來保證對Python3的兼容。這有?個強制讓你放棄12內置功能的?法:

from future.builtins.disabled import *

現在,只要你嘗試在Python3中使?這些被遺棄的模塊時,就會拋出?個NameError異常,如下:

from future.builtins.disabled import *

apply()

# Output: NameError: obsolete Python 2 builtin apply is disabled

標準庫向下兼容的外部?持

有?些包在?官?的?持下為Python2提供了Python3的功能。例如我們有:

enum pip install enum34

singledispatch pip install singledispatch

pathlib pip install pathlib

以上就是全部的方法,看到這里,相信大家已經明白了腳本相同時Python2和Python3如何兼容。如果要想學習更多關于Python的信息,請繼續關注中培偉業。

標簽: Python 軟件研發
主站蜘蛛池模板: 台湾省| 巧家县| 正蓝旗| 互助| 永吉县| 论坛| 桃园县| 宝应县| 锦州市| 铁岭市| 江达县| 洪泽县| 陇西县| 海阳市| 南宫市| 杭州市| 余庆县| 隆子县| 灵山县| 独山县| 克拉玛依市| 怀柔区| 宁化县| 宜黄县| 柏乡县| 台江县| 炎陵县| 固阳县| 唐海县| 社旗县| 阳原县| 罗山县| 盐边县| 朝阳县| 额济纳旗| 洪雅县| 江达县| 寿阳县| 西乌珠穆沁旗| 万荣县| 徐汇区|