分享 Python 3.6 中常用的幾個新特性

weixin_33782386發表於2018-04-07
9987047-c08a1aed31f50130

Python 3.6 釋出已經有段時間了,不少新特性應該被很多開發者用在了日常的開發中,這篇文章主要介紹下自己在開發中常用到的幾個。

增加數字可讀性

在定義數字的時候,有一個語法特性可以讓數字可讀性增強,即你在數字之間可以按照自己的喜好新增一個下滑線,就像這樣

9987047-34466d3086c1a12c

在這裡還是要推薦下我自己建的Python開發學習群:628979297,群裡都是學Python開發的,如果你正在學習Python ,小編歡迎你加入,大家都是軟體開發黨,不定期分享乾貨(只有Python軟體開發相關的),包括我自己整理的一份2018最新的Python進階資料和高階開發教程,歡迎進階中和進想深入Python的小夥伴

這樣書寫方式與之前的並無區別

9987047-8b0b41b6091f5d4b

語義其實是一樣的,也就是定義了一個值為 100000 的變數。

當然,對於十六進位制與二進位制也是支援的

9987047-f97998c8200e61ad

這個小修改也恰好體現了 Python 之禪的 Readability counts (可讀性很重要)這一點吧。

詳情請看 PEP 515 。

新的格式化字串的方法

Python 3.6 中新增了另一種格式化字串的方法,這個方法允許你在字串中直接嵌入表示式。下面有兩個例子,可以看看感受一下

9987047-e1599385b850a6ba
9987047-49b9065d362e4c2c

另外,和之前的 str.format() 格式化字串的方法類似,也可以用特定的格式說明符說明格式化的方式。比如我們想用十六進位制的形式格式化一個十進位制的數,可以這樣

9987047-74f611de5a14a6fa

相比於之前的 '...' % (val1[, val2, ...]) 以及 str.format() ,這種方式不管是書寫上還是可讀性上,感覺都方便了不少,所以如果你在 Python 3.6 中做開發的話,我十分推薦這種方式。

詳情請看 PEP 498 。

變數的型別註解

從 Python 3.5 開始,你可以給函式新增型別註解

9987047-a9ef6c0f9e6e0798

在 Python 3.6 中,你也可以給獨立的變數作型別註解,就像給函式中形式引數作註解差不多

9987047-5292e09e7b1d08db

需要注意的是,Python 的型別註解並不會在執行中執行相應的檢查

9987047-930e4f02c7322526

也就是說,如果你定義了一個整形的變數,而你卻賦值給它一個字串,Python 並不會報錯,對於函式的引數以及返回值的註解也是這樣的。個人覺得這更像是程式設計時的一個輔助措施。

如果你打算嚴格執行註解的要求,你可以使用 python/mypy 工具進行檢查。(使用方法請看 https://github.com/python/mypy )

詳情請看 PEP 526 。

其它值得注意的變化

新增加的模組中有一個叫做 secrets ,可以較為方便的提供密碼學安全的隨機串,我之前的一篇文章《玩轉 Python 中的隨機數》的後面部分對這個模組進行了一些簡單的說明,有興趣的朋友可以去看一下。

Python 3.6 中不僅僅是新特性的新增,也有效能的提升,比如字典型別相比之前更快,並且節省了 20% 到 25% 的空間。

9987047-939f8346f1e5556b

當然,這個版本帶來的變化肯定不止上面這麼一些,我例舉出來的都是一些常用的點。如果想看全面的說明,可以去官網( https://docs.python.org/3.6/whatsnew/3.6.html )看看。

上面的 PEP 515 、PEP 498 、PEP 526 的具體資訊都可以在上面的地址中看到。

9987047-d9a79a8fcac3ff6a

相關文章