摘要:正文總所周知,和根本就是兩個東西,每次因為這個兼容性的問題都會把自己搞瘋。提供了模塊,把下一個新版本的特性導入到當前版本,于是我們就可以在當前版本中測試一些新版本的特性。傳送門不多,才個。
寫在前面
我是在學習cs231n的assignment3的課程,發現里面的代碼大量頻繁出現了這個庫,那我就很奇怪了,為什么有個future這個奇怪名字的庫會出現呢?到底這個庫又有什么用?下面就讓我為你揭開。
正文總所周知,python3.x和python2.x根本就是兩個東西,每次因為這個兼容性的問題都會把自己搞瘋。
下面很多內容參考廖雪峰博客
從Python 2.7到Python 3.x就有不兼容的一些改動,比如2.x里的字符串用"xxx"表示str,Unicode字符串用u"xxx"表示unicode,而在3.x中,所有字符串都被視為unicode,因此,寫u"xxx"和"xxx"是完全一致的,而在2.x中以"xxx"表示的str就必須寫成b"xxx",以此表示“二進制字符串”。
于是呢。
Python提供了__future__模塊,把下一個新版本的特性導入到當前版本,于是我們就可以在當前版本中測試一些新版本的特性。舉例說明如下:
為了適應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) 輸出結果: "xxx" is unicode? True u"xxx" is unicode? True "xxx" is str? False b"xxx" is str? True
類似的情況還有除法運算。在Python 2.x中,對于除法有兩種情況,如果是整數相除,結果仍是整數,余數會被扔掉,這種除法叫“floor deviation”:
>>> 10 / 3 3
要做精確除法,必須把其中一個數變成浮點數:
>>> 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實現:
from __future__ import division print "10 / 3 =", 10 / 3 print "10.0 / 3 =", 10.0 / 3 print "10 // 3 =", 10 // 3
結果如下:
10 / 3 = 3.33333333333 10.0 / 3 = 3.33333333333 10 // 3 = 3
所以總結來說,__future__就好像這個名字一樣,未來,就是為了讓你在python2.x的情況下使用python3.x的東西,具體還有很多的詳細使用方式就需要好好看看api了。
api傳送門
feature不多,才7個。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/40787.html
摘要:機器學習由于數據量較大,技術已成為必要。以下腳本演示了世界銀行數據的線性回歸實用程序和緩存下載程序省略了水印和繪圖標簽的代碼代碼應顯示以下圖像該計劃下載年世界銀行數據,并將嬰兒死亡率與人均進行對比。 showImg(https://segmentfault.com/img/remote/1460000019179713); 來源 | 愿碼(ChainDesk.CN)內容編輯 愿碼Sl...
摘要:標準庫中所有阻塞型函數都會釋放,允許其他線程運行。如果調用引發異常,那么當從迭代器檢索其值時,將引發異常。總結自版就支持線程了,只不過是使用線程的最新方式。類封裝了模塊的組件,使使用線程變得更加方便。下一篇筆記應該是使用處理并發。 作為Python程序員,平時很少使用并發編程,偶爾使用也只需要派生出一批獨立的線程,然后放到隊列中,批量執行。所以,不夸張的說,雖然我知道線程、進程、并行、...
摘要:注本文的作者是。原文的地址為該筆記向你展示了編寫不會過時的兼容和的代碼風格。它是在的演講,。基本語法差異為了打印出多個。方方和工具沒有提供一個選項自動完成這個。如果你為了個項目編寫新的代碼庫,你可以用一個字符模塊標記所有的字符字面量。 注:本文的作者是 Ed Schofield。原文的地址為: Cheat Sheet: Writing Python 2-3 compatible ...
閱讀 1177·2021-11-23 10:10
閱讀 1499·2021-09-30 09:47
閱讀 887·2021-09-27 14:02
閱讀 2967·2019-08-30 15:45
閱讀 3020·2019-08-30 14:11
閱讀 3610·2019-08-29 14:05
閱讀 1820·2019-08-29 13:51
閱讀 2206·2019-08-29 11:33