成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

python進(jìn)階筆記【2】 --- 一個(gè)奇怪的 __future__ 庫

Achilles / 1019人閱讀

摘要:正文總所周知,和根本就是兩個(gè)東西,每次因?yàn)檫@個(gè)兼容性的問題都會(huì)把自己搞瘋。提供了模塊,把下一個(gè)新版本的特性導(dǎo)入到當(dāng)前版本,于是我們就可以在當(dāng)前版本中測(cè)試一些新版本的特性。傳送門不多,才個(gè)。

寫在前面

我是在學(xué)習(xí)cs231n的assignment3的課程,發(fā)現(xiàn)里面的代碼大量頻繁出現(xiàn)了這個(gè)庫,那我就很奇怪了,為什么有個(gè)future這個(gè)奇怪名字的庫會(huì)出現(xiàn)呢?到底這個(gè)庫又有什么用?下面就讓我為你揭開。

正文

總所周知,python3.x和python2.x根本就是兩個(gè)東西,每次因?yàn)檫@個(gè)兼容性的問題都會(huì)把自己搞瘋。

下面很多內(nèi)容參考廖雪峰博客

從Python 2.7到Python 3.x就有不兼容的一些改動(dòng),比如2.x里的字符串用"xxx"表示str,Unicode字符串用u"xxx"表示unicode,而在3.x中,所有字符串都被視為unicode,因此,寫u"xxx"和"xxx"是完全一致的,而在2.x中以"xxx"表示的str就必須寫成b"xxx",以此表示“二進(jìn)制字符串”。

于是呢。

Python提供了__future__模塊,把下一個(gè)新版本的特性導(dǎo)入到當(dāng)前版本,于是我們就可以在當(dāng)前版本中測(cè)試一些新版本的特性。舉例說明如下:

為了適應(yīng)Python 3.x的新的字符串的表示方法,在2.7版本的代碼中,可以通過unicode_literals來使用Python 3.x的新的語法:

# still running on Python 2.7

from __future__ import unicode_literals

print ""xxx" is unicode?", isinstance("xxx", unicode)
print "u"xxx" is unicode?", isinstance(u"xxx", unicode)
print ""xxx" is str?", isinstance("xxx", str)
print "b"xxx" is str?", isinstance(b"xxx", str)


輸出結(jié)果:

"xxx" is unicode? True
u"xxx" is unicode? True
"xxx" is str? False
b"xxx" is str? True

類似的情況還有除法運(yùn)算。在Python 2.x中,對(duì)于除法有兩種情況,如果是整數(shù)相除,結(jié)果仍是整數(shù),余數(shù)會(huì)被扔掉,這種除法叫“floor deviation”:

>>> 10 / 3
3

要做精確除法,必須把其中一個(gè)數(shù)變成浮點(diǎn)數(shù):

>>> 10.0 / 3
3.3333333333333335

而在Python 3.x中,所有的除法都是精確除法,floor deviation 用//表示:

$ python3
Python 3.3.2 (default, Jan 22 2014, 09:54:40) 
[GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.2.79)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 10 / 3
3.3333333333333335
>>> 10 // 3
3

如果你想在Python 2.7的代碼中直接使用Python 3.x的除法,可以通過__future__模塊的division實(shí)現(xiàn):

from __future__ import division

print "10 / 3 =", 10 / 3
print "10.0 / 3 =", 10.0 / 3
print "10 // 3 =", 10 // 3

結(jié)果如下:

10 / 3 = 3.33333333333
10.0 / 3 = 3.33333333333
10 // 3 = 3

所以總結(jié)來說,__future__就好像這個(gè)名字一樣,未來,就是為了讓你在python2.x的情況下使用python3.x的東西,具體還有很多的詳細(xì)使用方式就需要好好看看api了。

api傳送門
feature不多,才7個(gè)。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/40787.html

相關(guān)文章

  • Python

    摘要:最近看前端都展開了幾場而我大知乎最熱語言還沒有相關(guān)。有關(guān)書籍的介紹,大部分截取自是官方介紹。但從開始,標(biāo)準(zhǔn)庫為我們提供了模塊,它提供了和兩個(gè)類,實(shí)現(xiàn)了對(duì)和的進(jìn)一步抽象,對(duì)編寫線程池進(jìn)程池提供了直接的支持。 《流暢的python》閱讀筆記 《流暢的python》是一本適合python進(jìn)階的書, 里面介紹的基本都是高級(jí)的python用法. 對(duì)于初學(xué)python的人來說, 基礎(chǔ)大概也就夠用了...

    dailybird 評(píng)論0 收藏0
  • Python數(shù)據(jù)分析實(shí)用程序

    摘要:機(jī)器學(xué)習(xí)由于數(shù)據(jù)量較大,技術(shù)已成為必要。以下腳本演示了世界銀行數(shù)據(jù)的線性回歸實(shí)用程序和緩存下載程序省略了水印和繪圖標(biāo)簽的代碼代碼應(yīng)顯示以下圖像該計(jì)劃下載年世界銀行數(shù)據(jù),并將嬰兒死亡率與人均進(jìn)行對(duì)比。 showImg(https://segmentfault.com/img/remote/1460000019179713); 來源 | 愿碼(ChainDesk.CN)內(nèi)容編輯 愿碼Sl...

    mozillazg 評(píng)論0 收藏0
  • python并發(fā) 1:使用 futures 處理并發(fā)

    摘要:標(biāo)準(zhǔn)庫中所有阻塞型函數(shù)都會(huì)釋放,允許其他線程運(yùn)行。如果調(diào)用引發(fā)異常,那么當(dāng)從迭代器檢索其值時(shí),將引發(fā)異常。總結(jié)自版就支持線程了,只不過是使用線程的最新方式。類封裝了模塊的組件,使使用線程變得更加方便。下一篇筆記應(yīng)該是使用處理并發(fā)。 作為Python程序員,平時(shí)很少使用并發(fā)編程,偶爾使用也只需要派生出一批獨(dú)立的線程,然后放到隊(duì)列中,批量執(zhí)行。所以,不夸張的說,雖然我知道線程、進(jìn)程、并行、...

    Kyxy 評(píng)論0 收藏0
  • 編寫兼容 Python 2Python 3 代碼

    摘要:注本文的作者是。原文的地址為該筆記向你展示了編寫不會(huì)過時(shí)的兼容和的代碼風(fēng)格。它是在的演講,?;菊Z法差異為了打印出多個(gè)。方方和工具沒有提供一個(gè)選項(xiàng)自動(dòng)完成這個(gè)。如果你為了個(gè)項(xiàng)目編寫新的代碼庫,你可以用一個(gè)字符模塊標(biāo)記所有的字符字面量。 注:本文的作者是 Ed Schofield。原文的地址為: Cheat Sheet: Writing Python 2-3 compatible ...

    wangtdgoodluck 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<