python3兼容python2 print_python 字符串 r raw Python2 和 Python3 的區別及兼容技巧

前言

最近 Python 之父 Guido van Rossum(龜爺)終于在 Python 官方郵件組落實了 Python 2.7 的終焉之日(EOL)。

說的是 Python 2.7 的 EOL 日期最終確定為 2020 年 1 月 1 日,之后不會有任何更新,包括源碼的安全補丁。

所以兼容Python3已經可以說非常必要了,但有些常用的庫還沒有升級到Python3,所以我們看下如何寫出兼容2和3的代碼。

Python 2 or 3 ?

Python 3 被欽定為 Python 的未來,于 2008 年末發布,是目前正在開發的版本。旨在解決和修正 Python 2 遺留的設計缺陷、清理代碼庫冗余、追求有且僅有一種最佳實踐方式來執行任務等問題。

起初,由于 Python 3 不能向后兼容的事實,導致了用戶采用緩慢,對初學者不友好等問題。但在 Python 社區的努力和決絕態度下,截至龜爺發出郵件之前,已經有了 21903 個 Packages 可以支持 Python 3.5,其中包括了絕大多數最受歡迎的封裝庫,與此同時也有越來越多的封裝庫(e.g. Django、Numpy)表示其新版本將不再支持 Python 2。

Python 2.7 于 3.0 之后的 2010 年 7 月 3 日發布,計劃作為 2.x 的最后一個版本。Python 2.7 的歷史任務在于通過提供 2 和 3 之間的兼容性措施,使 Python 2.x 的用戶更容易將代碼移植到 Python 3.x 上。那么如果你希望自己的代碼能夠兼容兩個不同的版本,首先你起碼要讓代碼能夠正常的運行在 Python 2.7 上。

注:下文使用 P2 表示 Python 2.7;使用 P3 表示 Python 3.x。

不同與兼容

__future__ 模塊是我們首先需要了解的,該模塊最主要的作用是支持在 P2 中導入那些在 P3 才生效的模塊和函數。是一個非常優秀的兼容性工具庫,在下文中給出的許多 兼容技巧 實例都依賴于它。

特性在此版本可選在此版本內置效果

電腦技術002pc網認為此文章對《python 字符串 r raw Python2 和 Python3 的區別及兼容技巧》說的很在理。

nested_scopes2.1.0b12.2PEP 227:靜態嵌套作用域

generators2.2.0a12.3PEP 255:簡單生成器

division2.2.0a23.0PEP 238:除法操作符改動

absolute_import2.5.0a13.0PEP 328:Imports 多行導入與絕對相對路徑

with_statement2.5.0a12.6PEP 343:with 語句

print_function2.6.0a23.0PEP 3105:print 語句升級為函數

unicode_literals2.6.0a23.0PEP 3112:Bytes 類型

(__future__ 功能列表)

統一不等于語法

P2 支持使用 <> 和 != 表示不等于。

P3 僅支持使用 != 表示不等于。

兼容技巧:

統一使用 != 語法

統一整數類型

P2 中整數類型可以細分為短整型 int 和長整型 long。

P3 廢除了短整型,并統一使用 int 表示長整型(不再有 L 跟在 repr 后面)。

兼容技巧:#?Python?2?only

k?=?9223372036854775808L

#?Python?2?and?3:

k?=?9223372036854775808#?Python?2?only

bigint?=?1L

#?Python?2?and?3

from?future.builtins?import?int

bigint?=?int(1)

統一整數除法

P2 的除法 / 符號實際上具有兩個功能:

當兩個操作數均為整型對象時,進行的是地板除(截除小數部分),返回整型對象;

當兩個操作數存在至少一個浮點型對象時,進行的是真除(保留小數部分),返回浮點型對象。

P3 的除法 / 符號僅僅具有真除的功能,而地板除的功能則交由 // 來完成。

兼容技巧:#?Python?2?only:

assert?2?/?3?==?0

#?Python?2?and?3:

assert?2?//?3?==?0

“True?division”?(float?division):#?Python?3?only:

assert?3?/?2?==?1.5

#?Python?2?and?3:

from?__future__?import?division????#?(at?top?of?module)

更多:python 字符串 r raw Python2 和 Python3 的區別及兼容技巧

https://www.002pc.comhttps://www.002pc.com/python/1254.html

你可能感興趣的Python3,Python2,兼容,技巧,區別

No alive nodes found in your cluster

0踩

0 贊

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/534032.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/534032.shtml
英文地址,請注明出處:http://en.pswp.cn/news/534032.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

nginx搭建文件服務器腳本,基于docker搭建nginx文件服務器的方法步驟

1.在本機新建配置文件docker_nginx.confserver {listen 7070;server_name localhost;charset utf-8;location /files {#在docker內nginx的目錄alias /home/files;expires 1d;allow all;autoindex on;}2.啟動命令docker run --name nginx -d -p 7070:7070 -v D:\dev\nginx-1.13.…

python運行不了指令_python不是內部命令或外部命令,也不是可執行程序解決方法...

簡述 常見于新手初裝python&#xff0c;然后忘記勾選設置環境變量(PATH)&#xff0c;或者沒有重啟&#xff0c;然后運行教程中的python命令時出現。 有兩個解決方法&#xff1a;1.設置環境變量&#xff0c;然后重啟。 2.新建命令。 如果你打算同時安裝多個python版本&#xff0…

快手通過標簽添加你什么意思_快快手粉絲數旁邊的關注是什么意思手通過關注頁添加是什么意思...

Aauto Speeter通過關注頁面添加的內容意味著&#xff0c;如果你已經在關注遇到了其他人&#xff0c;并且他們對你感興趣&#xff0c;他們將從這個關注頁面添加關注&#xff0c;并成為你的粉絲。事實上&#xff0c;得到關注和粉絲并不是特別困難。如果主要發表的內容有意思&…

ovation系統服務器安裝,Ovation系統介紹.ppt

Ovation系統介紹熱控調試關于OVATION系統的一點簡介;目錄;Ovation系統的結構及硬件;典型的OVATION系統結構;Primary;網線插拔后需重啟控制器&#xff0c;否則顯示橙色&#xff0c;failmode報警;每扇門都有風扇;;I/0 子系統結構 ; I/O 模件; I/O 卡指示 ;模件種類減少&#xff0…

東京戰紀服務器維護中,東京戰紀7月21維護公告 當前測試進度介紹

東京戰紀當前的測試進度已經有了很大的進步&#xff0c;接下來小編就跟大家一起看看測試期間對玩家給大家的報告吧。親愛的喰種和CCG搜查官們7月19日中午12:00&#xff0c;我們懷著緊張又忐忑的心情開啟了《東京戰紀》官網限量刪檔技術測試。大家對《東京喰種》IP的熱愛和對《東…

springboot能用python嗎_Python與springboot的對接

使用springboot建立一個web demo ,其中有一個接口如下&#xff0c;為了測試加了一個參數 type: Autowired private JdbcTemplate jdbcTemplate; RequestMapping(value "/getCountry", method RequestMethod.GET) // ResponseBody public List> getUser(RequestB…

docker重啟后容器消失_docker設置固定ip地址

代碼來源:博客園 原文作者:雪之谷 原文鏈接:https://www.cnblogs.com/xuezhigu/p/8257129.html 本文版權歸原作者所有,如有侵權請立即與我聯系,我將及時處理。 背景: 我開發用的機器上邊會啟動幾個容器,就因為保潔阿姨碰了一下我的插排,我的機器被斷電關機了。 默認情況下…

模型穩定后放在服務器上,把工程放在服務器上

把工程放在服務器上 內容精選換一換獲取方式&#xff1a;Ascend-mindx-msinstaller_{version}.zip&#xff1a;獲取鏈接適用場景&#xff1a;在一臺Linux服務器上使用msInstaller工具給本機安裝開發或運行環境。在一臺Linux服務器上使用msInstaller工具遠程給昇騰AI設備安裝開發…

洛陽地鐵一號線無人駕駛_洛陽地鐵洛陽造:智能化車廂、無人駕駛、加熱座椅……...

大家好&#xff0c;印象妹又來給大家播報地鐵的情況啦&#xff01;自從12月1日地鐵1號線試運行啟動&#xff0c;后臺里經常有人私信印象妹&#xff0c;多講講咱大洛陽的地鐵情況&#xff0c;下面&#xff0c;來咯&#xff01;身為洛陽人&#xff0c;我們都知道洛陽是中西部地區…

html計算器_學習HTML、CSS和JavaScript的最佳方法是什么?

與其他后端語言相比&#xff0c;HTML、CSS和JavaScript無論從閱讀角度還是編寫的角度來說都更加容易一點。所以新手在學習前端知識的時候不必有太大的心理壓力 &#xff0c;心態擺正后&#xff0c;大部分人都可以將前端學好。下面聊聊Html、CSS、JavaScript的最佳學習方法&…

網站重新解析換服務器,更換解析服務器地址

更換解析服務器地址 內容精選換一換普通的域名解析只為用戶返回解析記錄&#xff0c;不會考慮訪問者的來源&#xff0c;這樣所有的訪問者都被解析到相同的IP地址上&#xff0c;容易出現由跨運營商訪問引起網絡延遲。運營商線路解析是云解析服務提供的按運營商維度來區分訪問者來…

git merge 回退_Git 基礎學習總結2(學不會你錘我)

作者序&#xff1a;我在知乎上搜索了有關 Git 的學習文章&#xff0c;雖然點贊很多但我認為他們寫得并不好&#xff0c;內容不夠詳盡&#xff0c;排版讓人看得疲勞&#xff0c;所以我決定自己寫幾篇關于 Git 的學習文章。當別人提供的不好用就自己創造一個新的&#xff0c;這也…

azure的虛擬機怎么選_Windows Azure案例: 選虛擬機或云服務

01虛擬機和云服務隨著云計算技術和市場的日漸成熟&#xff0c;企業在考慮IT管理和運維時的選擇也更加多樣化&#xff0c;應用也從傳統部署方式&#xff0c;發展為私有云、公有云、和混合云等部署方式。作為微軟核心的公有云平臺&#xff0c;Windows Azure提供了三種計算模式(虛…

ajax加載進度百分比,在ajax中顯示加載百分比的進度條,php

您好我正在使用ajax加載數據庫內容。我想顯示加載或圖像的總百分比。在ajax中顯示加載百分比的進度條&#xff0c;php這是我的腳本function name1(str){if (str.length0){document.getElementById("txtHint").innerHTML"";return;}if (window.XMLHttpReque…

python破解百度網盤提取碼_Python 一鍵獲取百度網盤提取碼

該 GIF 圖來自于官網&#xff0c;文末有給出鏈接。 描述 依托于百度網盤巨大的的云存儲空間&#xff0c;絕大數人會習慣性的將一些資料什么的存儲到上面&#xff0c;但是有的私密鏈接需要提取碼&#xff0c;但是讓每個想下載私密資源的人記住每一個提取碼顯然是不現實的。這個時…

assertpythonraise_使用assertRaise測試異常消息

我試圖在一個條件引發自定義異常消息的函數內斷言異常.功能&#xff1a;if not Cart.objects.filter(membermember).count():raise CartDoesNotExist("Cart Does Not Exist for Member: %s ( %id )." % (member.email,member.id))現在,我能夠成功地產生獲得加注聲明所…

vs12新建ajax,VS2012下WebService?的創建,部署和使用

WebService,即Web服務,能使得運行在不同機器上的不同應用無須借助,專門的第三方軟件或硬件,就可相互交換數據或集成.第一次選擇WebService,是為了替代數據庫遠程連接.我們都知道當SQL允許遠程時,則要打開某一端口.但這一點在我們已經部署好的服務器上,卻是不被允許的,于是就選擇…

pythonsql注入_python使用mysql,sql注入問題

python使用mysql importpymysql connpymysql.connect( host 127.0.0.1, #連接地址 port 3306, #端口 user root, #用戶名 password , #密碼 database db, #庫名稱 charset utf8 #編碼格式 utf8,不是utf-8 ) cursor conn.cursor(pymsql.cursors.DictCursor) #產生一個游標,…

h5優秀控件_H5前端學習的js插件大全,基本包含了大部分的前端最前沿的js插件和庫。...

布局SuperEmbed.js - 是一個Javascript庫&#xff0c;可檢測出網頁上的內嵌視頻并使他們能夠變成響應式元素。demoScrollReveal - ScrollReveal插件使用戶能夠無比輕松地創建桌面和移動瀏覽器的網頁滾動動畫。demoBricks.js - 是一款超快的用于固定寬度元素的“磚石”布局生成器…

js 控制鼠標_JS逆向 | 面向小白之eval混淆

所有文章首發在我的微信公眾號“逆向新手”&#xff0c;更多逆向系列請關注公眾號&#xff0c;謝謝&#xff01;聲明&#xff1a;本文只作學習研究&#xff0c;禁止用于非法用途&#xff0c;否則后果自負&#xff0c;如有侵權&#xff0c;請告知刪除&#xff0c;謝謝&#xff0…