Python 3.6 有什麼新特性?
語法層面上,新增了 Formatted string literals,在通過字元串的前綴 "f",類似於 Scala/Swift 等語言的字元串插值,示例代碼如下:
&>&>&> name = "Fred"
&>&>&> f"He said his name is {name}."
"He said his name is Fred."
事實上原理為:
&>&>&> name = "Fred"
&>&>&> "He said his name is {name}.".format(name=name)
"He said his name is Fred."
------------------
Python3.6在2016.12.23正式發布,你可以點擊官方文章這裡查看整個的變化日誌;Python3.6中主要的變化如下(翻譯自官方文檔)
新的語法特性
- PEP 498, 格式化字元串變數.
- PEP 515, 數字變數使用下劃線.
- PEP 526, 給變數添加註釋的語法.
- PEP 525, 非同步生成器.
- PEP 530: 非同步推導.
新的庫模板
- secrets: PEP 506 – Adding A Secrets Module To The Standard Library.
CPython的一些改進
- 重新實現了字典dict,使其更加緊湊,像是PyPy中的實現。此次重新實現的dict比Python3.5中的字典內存使用減少了20%-25%
- 定製類的創建使用 new protocol 進行了簡化
- 類中各個屬性定義的順序現在是被保存的 now preserved.
- 雙星號變數**kwargs中的元素的順序是你傳入函數中的元素的順序
- 添加了DTrace和SystemTap探測支持。
- 新的PYTHONMALLOC環境變數現在可用於調試解釋器內存分配和訪問錯誤。
標準庫的重大改進
- asyncio模板添加了很多新的功能、重要的可用性、性能改進以及大量的bug,從Python3.6開始 asyncio模板不再是臨時的並且API變得更加穩定
- 一個新的文件系統路徑協議file system path protocol已經產生來支持 path-like objects,標準庫中所有的文件路徑操作已經被更新到使用新的協議
- datetime模板現在已經支持 Local Time Disambiguation
- typing模板進行了很多的改進
- tracemalloc模板進行了大幅度的改進,現在用來為ResourceWarning提供更好的輸出、以及為內存分配錯誤提供更好的診斷。
安全性的提高
- 添加了新的模板secrets以簡化使用於管理密碼,比如賬號認證,令牌等的密碼的隨機數的生成
- 在Linux OS中,os.urandom()現在阻塞,直到系統urandom熵池被初始化以增加安全
- hashlib和ssl 模板現在已經支持OpenSSL 1.1.0.
- ssl 模板中的默認設置和功能現在已經被改進了
- 模板現在新增了對BLAKE2, SHA-3 and SHAKE的哈希演算法以及scrypt()密鑰導出函數的支持
在項目中已經開始使用type hints了。
另外現在在用.format(**locals())的語法來兼容 Formatted string literals。1. 在linux下, 可以使用 python3.6 命令進入 python shell 環境.
2. 可以使用 pip3.6 來進行 python3.6 第三方模塊的升級安裝3. 敲入 python3.6 --version, 將顯示 Python 3.6.x以上純屬玩笑https://www.python.org/dev/peps/(點我點我)題主可以慢慢翻, 其中有一段 Accepted PEPs, 表示已經接受的草案, 比如其中的PEP484就已經在python3.5中實現了.
Python3.6b1發布了,終於可以談一談有什麼可以一說的新特性了。
首先3.6實現了16個新PEP標準,其中幾個值得特別說一下:
PEP-0498 Formatted string literals,這個已經有人提過了。
PEP-0530和PEP-0525為async/await擴展了新的應用場景,不過我覺得前面應該比後面更常用一點。
PEP-0526 Syntax for variable annotations,是專門為Type Hint添加的,這會為Python的大型工程化表現有所幫助,建議大家一起來把類型聲明一下吧。我們已經在內部項目中使用了TypeHint,還是比較有用的。
PEP-0529和PEP-0528都是為Windows用戶準備的,全部切換成了UTF8,不過我不是Windows用戶...
一個非PEP標準:
DTrace and SystemTap probing support,這是為Python添加了本地調試器支持,這個會對Python的開發尤其是伺服器之類的場景非常有幫助。今年pycon china shanghai來自餓了么的工程師也分享了相關的黑魔法(clouddn.com 的頁面),之前是需要特定版本Python支持的功能現在在Linux和macOS上都可以支持了。
更新:2016-09-14----------Release date: TBA- Summary – Release highlights
None yet.
- Other Language Changes
None yet.
- New Modules
None yet.
What』s New In Python 3.6增加了數學常量
math.tau = 2 * math.pi
推薦閱讀:
※Python2轉Python3有沒有必要重新學習?
※VPS 如何搭建 Python 環境?
※為什麼 Python 不用 C++ 實現?
※Python為什麼直接運行和在命令行運行同樣語句但結果卻不同,他們的緩存機制不同嗎?
※在Mac系統下python如何安裝第三方函數庫?