最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

讓python同時(shí)兼容python2和python3的8個(gè)技巧分享

 更新時(shí)間:2014年07月11日 08:43:34   投稿:junjie  
這篇文章主要介紹了讓python同時(shí)兼容python2和python3的8個(gè)技巧分享,對(duì)代碼稍微做些修改就可以很好的同時(shí)支持python2和python3的,需要的朋友可以參考下

python郵件列表里有人發(fā)表言論說(shuō)“python3在10內(nèi)都無(wú)法普及”。在我看來(lái)這樣的觀點(diǎn)有些過(guò)于悲觀,python3和python2雖然不兼容,但他們之間差別并沒(méi)很多人想像的那么大。你只需要對(duì)自己的代碼稍微做些修改就可以很好的同時(shí)支持python2和python3的。下面我將簡(jiǎn)要的介紹一下如何讓自己的python代碼如何同時(shí)支持python2和python3。

一、放棄python 2.6之前的python版本

python 2.6之前的python版本缺少一些新特性,會(huì)給你的遷移工作帶來(lái)不少麻煩。如果不是迫不得已還是放棄對(duì)之前版本的支持吧。

二、使用 2to3 工具對(duì)代碼檢查

2to3是python自帶的一個(gè)代碼轉(zhuǎn)換工具,可以將python2的代碼自動(dòng)轉(zhuǎn)換為python3的代碼。當(dāng)然,不幸的是轉(zhuǎn)換出的代碼并沒(méi)有對(duì)python2的兼容做任何的處理。所以我們并不真正使用2to3轉(zhuǎn)換出的代碼。執(zhí)行2to3 t.py 查看輸出信息,并修正相關(guān)問(wèn)題。

三、使用python -3執(zhí)行python程序

2to3 可以檢查出很多python2&3的兼容性問(wèn)題,但也有很多問(wèn)題是2to3發(fā)現(xiàn)不了的。在加上 -3 參數(shù)后,程序在運(yùn)行時(shí)會(huì)在控制臺(tái)上將python2和python3不一致,同時(shí)2to3無(wú)法處理的問(wèn)題提示出來(lái)。比如python3和python2中對(duì)除法的處理規(guī)則做過(guò)改變。使用-3參數(shù)執(zhí)行4/2將提示 DeprecationWarning: classic int division 。

四、from __future__ import

“from __future__ import”后即可使使用python的未來(lái)特性了。python的完整future特性可見(jiàn) __future__ 。python3中所有字符都變成了unicode。在python2中unicode字符在定義時(shí)需要在字符前面加 u,但在3中則不需要家u,而且在加u后程序會(huì)無(wú)法編譯通過(guò)。為了解決該問(wèn)題可以 “from future import unicode_literals” ,這樣python2中字符的行為將和python3中保持一致,python2中定義普通字符將自動(dòng)識(shí)別為unicode。

五、import問(wèn)題

python3中“少”了很多python2的包,在大多情況下這些包之是改了個(gè)名字而已。我們可以在import的時(shí)候?qū)@些問(wèn)題進(jìn)行處理。

復(fù)制代碼 代碼如下:
try:#python2
    from UserDict import UserDict
    #建議按照python3的名字進(jìn)行import
    from UserDict import DictMixin as MutableMapping
except ImportError:#python3
    from collections import UserDict
    from collections import MutableMapping

六、使用python3的方式寫程序

python2中print是關(guān)鍵字,到了python3中print變成了函數(shù)。事實(shí)上在python2.6中已經(jīng)帶了print函數(shù),所以對(duì)print你直接按照2to3中給出的提示改為新寫法即可。在python3中對(duì)異常的處理做了些變化,這個(gè)和print類似,直接按照2to3中的提示修改即可。

七、檢查當(dāng)前運(yùn)行的python版本

有時(shí)候你或許必須為python2和python3寫不同的代碼,你可以用下面的代碼檢查當(dāng)前系統(tǒng)的python版本。

復(fù)制代碼 代碼如下:
import sys
if sys.version > '3':
    PY3 = True
else:
    PY3 = False

八、six

six 提供了一些簡(jiǎn)單的工具用來(lái)封裝 Python 2 和 Python 3 之間的差異性。我并不太推薦使用six。如果不需要支持python2.6之前的python版本,即使不用six也是比較容易處理兼容性問(wèn)題的。使用six會(huì)讓你的代碼更像python2而不是python3。
python3的普及需要每位pythoner的推動(dòng),或許你還無(wú)法立即升級(jí)到python3,但請(qǐng)現(xiàn)在就開(kāi)始寫兼容python3的代碼,并在條件成熟時(shí)升級(jí)到python3。

注:python2同python3的差異

如果你更全面的了解從python2遷移到python3的相關(guān)問(wèn)題,推薦閱讀 Porting to Python 3 這是一本免費(fèi)的python讀物。

相關(guān)文章

  • python 偷懶技巧——使用 keyboard 錄制鍵盤事件

    python 偷懶技巧——使用 keyboard 錄制鍵盤事件

    這篇文章主要介紹了python如何使用 keyboard 錄制鍵盤事件,幫助大家提高工作效率,感興趣的朋友可以了解下
    2020-09-09
  • 通過(guò)代碼實(shí)例了解Python sys模塊

    通過(guò)代碼實(shí)例了解Python sys模塊

    這篇文章主要介紹了通過(guò)代碼實(shí)例了解Python sys模塊,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • Python隨機(jī)值生成的常用方法總結(jié)

    Python隨機(jī)值生成的常用方法總結(jié)

    這篇文章主要為大家詳細(xì)介紹了Python中隨機(jī)值生成的一些常用方法,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Python有一定幫助,需要的可以了解一下
    2022-10-10
  • python?requests.post請(qǐng)求404問(wèn)題及解決方法

    python?requests.post請(qǐng)求404問(wèn)題及解決方法

    這篇文章主要介紹了python?requests.post請(qǐng)求404問(wèn)題,這里需要根據(jù)自己實(shí)際情況來(lái)分析當(dāng)前接口接收數(shù)據(jù)時(shí)使用的是什么格式,但目前一般的網(wǎng)站都開(kāi)始采用application/jsond的數(shù)據(jù)格式,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-09-09
  • Python學(xué)習(xí)筆記之Django創(chuàng)建第一個(gè)數(shù)據(jù)庫(kù)模型的方法

    Python學(xué)習(xí)筆記之Django創(chuàng)建第一個(gè)數(shù)據(jù)庫(kù)模型的方法

    今天小編就為大家分享一篇Python學(xué)習(xí)筆記之Django創(chuàng)建第一個(gè)數(shù)據(jù)庫(kù)模型的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-08-08
  • 全面解析Python中的self技巧

    全面解析Python中的self技巧

    在Python中,類的方法定義時(shí)通常會(huì)包含一個(gè)名為?self?的參數(shù),它表示對(duì)象實(shí)例本身,下面我們就來(lái)了解一下self的相關(guān)應(yīng)用技巧,需要的可以參考下
    2024-01-01
  • Python基礎(chǔ)教程,Python入門教程(超詳細(xì))

    Python基礎(chǔ)教程,Python入門教程(超詳細(xì))

    Python由荷蘭數(shù)學(xué)和計(jì)算機(jī)科學(xué)研究學(xué)會(huì) 于1990 年代初設(shè)計(jì),作為一門叫做ABC語(yǔ)言的替代品。Python語(yǔ)法和動(dòng)態(tài)類型,以及解釋型語(yǔ)言的本質(zhì),使它成為多數(shù)平臺(tái)上寫腳本和快速開(kāi)發(fā)應(yīng)用的編程語(yǔ)言
    2021-06-06
  • python2和python3在處理字符串上的區(qū)別詳解

    python2和python3在處理字符串上的區(qū)別詳解

    這篇文章主要介紹了python2和python3在處理字符串上的區(qū)別詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • python操作toml文件的示例代碼

    python操作toml文件的示例代碼

    這篇文章主要介紹了python操作toml文件的示例代碼,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下
    2020-11-11
  • PyTorch張量操作指南(cat、stack、split與chunk)

    PyTorch張量操作指南(cat、stack、split與chunk)

    本文深入探討PyTorch中用于調(diào)整張量結(jié)構(gòu)的四個(gè)核心函數(shù)——torch.cat、torch.stack、torch.split和torch.chunk,通過(guò)實(shí)際應(yīng)用場(chǎng)景分析和代碼演示,幫助讀者掌握它們的功能差異及適用條件,提升模型開(kāi)發(fā)的靈活性與效率,需要的朋友可以參考下
    2025-04-04

最新評(píng)論

习水县| 新乐市| 涟水县| 咸宁市| 宁海县| 齐河县| 舟曲县| 怀柔区| 张北县| 项城市| 贵阳市| 合作市| 久治县| 怀柔区| 长白| 吴江市| 五华县| 台湾省| 潮州市| 乌苏市| 鹤峰县| 读书| 库车县| 加查县| 南和县| 靖西县| 乌兰浩特市| 安塞县| 庐江县| 乌鲁木齐市| 特克斯县| 河东区| 霍城县| 临朐县| 澳门| 左云县| 聊城市| 通河县| 兴城市| 台山市| 永兴县|