python3兼容python2 print_python 字符串 r raw Python2 和 Python3 的区别及兼容技巧
前言
最近 Python 之父 Guido van Rossum(龜爺)終于在 Python 官方郵件組落實(shí)了 Python 2.7 的終焉之日(EOL)。
說(shuō)的是 Python 2.7 的 EOL 日期最終確定為 2020 年 1 月 1 日,之后不會(huì)有任何更新,包括源碼的安全補(bǔ)丁。
所以兼容Python3已經(jīng)可以說(shuō)非常必要了,但有些常用的庫(kù)還沒(méi)有升級(jí)到Python3,所以我們看下如何寫出兼容2和3的代碼。
Python 2 or 3 ?
Python 3 被欽定為 Python 的未來(lái),于 2008 年末發(fā)布,是目前正在開(kāi)發(fā)的版本。旨在解決和修正 Python 2 遺留的設(shè)計(jì)缺陷、清理代碼庫(kù)冗余、追求有且僅有一種最佳實(shí)踐方式來(lái)執(zhí)行任務(wù)等問(wèn)題。
起初,由于 Python 3 不能向后兼容的事實(shí),導(dǎo)致了用戶采用緩慢,對(duì)初學(xué)者不友好等問(wèn)題。但在 Python 社區(qū)的努力和決絕態(tài)度下,截至龜爺發(fā)出郵件之前,已經(jīng)有了 21903 個(gè) Packages 可以支持 Python 3.5,其中包括了絕大多數(shù)最受歡迎的封裝庫(kù),與此同時(shí)也有越來(lái)越多的封裝庫(kù)(e.g. Django、Numpy)表示其新版本將不再支持 Python 2。
Python 2.7 于 3.0 之后的 2010 年 7 月 3 日發(fā)布,計(jì)劃作為 2.x 的最后一個(gè)版本。Python 2.7 的歷史任務(wù)在于通過(guò)提供 2 和 3 之間的兼容性措施,使 Python 2.x 的用戶更容易將代碼移植到 Python 3.x 上。那么如果你希望自己的代碼能夠兼容兩個(gè)不同的版本,首先你起碼要讓代碼能夠正常的運(yùn)行在 Python 2.7 上。
注:下文使用 P2 表示 Python 2.7;使用 P3 表示 Python 3.x。
不同與兼容
__future__ 模塊是我們首先需要了解的,該模塊最主要的作用是支持在 P2 中導(dǎo)入那些在 P3 才生效的模塊和函數(shù)。是一個(gè)非常優(yōu)秀的兼容性工具庫(kù),在下文中給出的許多 兼容技巧 實(shí)例都依賴于它。
特性在此版本可選在此版本內(nèi)置效果
電腦技術(shù)002pc網(wǎng)認(rèn)為此文章對(duì)《python 字符串 r raw Python2 和 Python3 的區(qū)別及兼容技巧》說(shuō)的很在理。
nested_scopes2.1.0b12.2PEP 227:靜態(tài)嵌套作用域
generators2.2.0a12.3PEP 255:簡(jiǎn)單生成器
division2.2.0a23.0PEP 238:除法操作符改動(dòng)
absolute_import2.5.0a13.0PEP 328:Imports 多行導(dǎo)入與絕對(duì)相對(duì)路徑
with_statement2.5.0a12.6PEP 343:with 語(yǔ)句
print_function2.6.0a23.0PEP 3105:print 語(yǔ)句升級(jí)為函數(shù)
unicode_literals2.6.0a23.0PEP 3112:Bytes 類型
(__future__ 功能列表)
統(tǒng)一不等于語(yǔ)法
P2 支持使用 <> 和 != 表示不等于。
P3 僅支持使用 != 表示不等于。
兼容技巧:
統(tǒng)一使用 != 語(yǔ)法
統(tǒng)一整數(shù)類型
P2 中整數(shù)類型可以細(xì)分為短整型 int 和長(zhǎng)整型 long。
P3 廢除了短整型,并統(tǒng)一使用 int 表示長(zhǎng)整型(不再有 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)
統(tǒng)一整數(shù)除法
P2 的除法 / 符號(hào)實(shí)際上具有兩個(gè)功能:
當(dāng)兩個(gè)操作數(shù)均為整型對(duì)象時(shí),進(jìn)行的是地板除(截除小數(shù)部分),返回整型對(duì)象;
當(dāng)兩個(gè)操作數(shù)存在至少一個(gè)浮點(diǎn)型對(duì)象時(shí),進(jìn)行的是真除(保留小數(shù)部分),返回浮點(diǎn)型對(duì)象。
P3 的除法 / 符號(hào)僅僅具有真除的功能,而地板除的功能則交由 // 來(lái)完成。
兼容技巧:#?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 的區(qū)別及兼容技巧
https://www.002pc.comhttps://www.002pc.com/python/1254.html
你可能感興趣的Python3,Python2,兼容,技巧,區(qū)別
No alive nodes found in your cluster
0踩
賞
0 贊
總結(jié)
以上是生活随笔為你收集整理的python3兼容python2 print_python 字符串 r raw Python2 和 Python3 的区别及兼容技巧的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 看到红萝卜瓷砖不错,确认一下属于十强瓷砖
- 下一篇: websocket python爬虫_p