亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

python3.7 的新特性詳解

系統 1553 0

Python 3.7增添了眾多新的類,可用于數據處理、針對腳本編譯和垃圾收集的優化以及更快的異步I/O。

Python這種語言旨在使復雜任務變得簡單,最新版本Python 3.7已正式進入測試版發布階段。Python 3.7的最終版定于2018年6月發布,但此后不會為Python 3.7版本添加任何新功能。

Python 3.7最重要的添加和改進之處包括如下:

  • 用類處理數據時減少樣板代碼的數據類。
  • 一處可能無法向后兼容的變更涉及處理生成器中的異常。
  • 面向解釋器的“開發模式”。
  • 具有納秒分辨率的時間對象。
  • 環境中默認使用UTF-8編碼的UTF-8模式。
  • 觸發調試器的一個新的內置函數。

Python數據類

眾所周知,Python是處理結構化數據的一種快捷又方便的方法。Python提供了用來組織管理結構,并將常見行為與數據實例聯系起來的類,但是擁有許多初始化器的類歷來存在這個弊端:需要大量的樣板代碼為它們創建實例。比如說:

python3.7 的新特性詳解_第1張圖片

為了使這實現自動化:為類創建實例,Python 3.7引入了一個新的模塊dataclasses,如PEP 557中所述(https://www.python.org/dev/peps/pep-0557/)。它提供了一個裝飾器,能夠以異常簡單的方式重現上述行為:

python3.7 的新特性詳解_第2張圖片

因而生成的類運行起來如同普通的Python類。你還可以聲明某些字段是“凍結”或不可變的,并且使創建屬性的特殊方法(比如__hash__或__repr__)實現自動化(或手動覆蓋)。

Python生成器異常處理

正如PEP 479中概述(https://www.python.org/dev/peps/pep-0479/),開發了一段時間的一處變更旨在讓人們更容易調試Python生成器引發的StopIteration異常。以前,生成器遇到另一個問題時很容易引發StopIteration,而不是由于它用完了需要迭代的東西。這帶來了一整批很難追蹤的代碼缺陷。

在Python 3.7中,生成器引發StopIteration異常后,StopIteration異常將被轉換成RuntimeError異常,那樣它不會悄悄一路影響應用程序的堆棧框架。這意味著如何處理生成器的行為方面不太敏銳的一些程序會在Python 3.7中拋出RuntimeError。而在Python 3.6中,這種行為生成一個棄用警告;在Python 3.7中,它生成一個完整的錯誤。

一個簡易的方法是使用try/except代碼段,在StopIteration傳播到生成器的外面捕獲它。更好的解決方案是重新考慮如何構建生成器?D?D比如說,使用return語句來終止生成器,而不是手動引發StopIteration。想進一步了解如何在現有代碼中補救這個問題,如何在新代碼中防范該問題,請參閱PEP 469(https://www.python.org/dev/peps/pep-0479/)。

Python開發模式

Python解釋器新的命令行開關:-X讓開發人員可以為解釋器設置許多低級選項。在Python 3.7中,選項-X dev啟用“開發模式”,這種運行時檢查機制通常對性能有重大影響,但在調試過程中對開發人員很有用。

-X dev激活的選項包括:

  • asyncio模塊的調試模式。這為異步操作提供了更詳細的日志記錄和異常處理,而異常操作可能很難調試或推理。
  • 面向內存分配器的調試鉤子。這對于編寫CPython擴展件的那些人很有用。它能夠實現更明確的運行時檢查,了解CPython如何在內部分配內存和釋放內存。
  • 啟用faulthandler模塊,那樣發生崩潰后,traceback始終轉儲出去。

具有納秒分辨率的Python時間函數

Python 3.7中一類新的時間函數返回納秒精度的時間值。盡管Python是一種解釋型語言,但是Python的核心開發人員維克多?斯廷納(Victor Stinner)主張報告納秒精度的時間。最主要的原因是,在處理轉換其他程序(比如數據庫)記錄的時間值時,可以避免丟失精度。

新的時間函數使用后綴_ns。比如說,time.process_time()的納秒版本是time.process_time_ns()。請注意,并非所有的時間函數都有對應的納秒版本,因為其中一些時間函數并不得益于此。

Python UTF-8模式

Python一直支持UTF-8,以便輕松處理字符串和文本。但是周圍環境中的語言環境(locale)有時仍是ASCII,而不是UTF-8,檢測語言環境的機制并不總是很可靠。

Python 3.7添加了所謂的“UTF-8模式”,可通過-X命令行開關啟用該模式,該模式假設UTF-8是環境提供的語言環境。在POSIX語言環境中,UTF-8模式默認情況下已被啟用,但在其他位置默認情況下被禁用,以免破壞向后兼容。值得試一試在默認情況下開啟UTF-8模式,但不應該在生產環境下啟用它,除非你確信Python與周圍環境的所有交互都使用UTF-8。

內置breakpoint()函數

Python隨帶內置的調試器,不過它也可以連入到第三方調試工具,只要它們能與Python的內部調試API進行對話。不過,Python到目前為止缺少一種從Python應用程序里面以編程方式觸發調試器的標準化方法。

Python 3.7添加了breakpoint(),這個內置函數使得函數被調用時,讓執行切換到調試器。相應的調試器不一定是Python自己的pdb,可以是之前被設為首選調試器的任何調試器。以前,調試器不得不手動設置,然后調用,因而使代碼更冗長。而有了breakpoint(),只需一個命令即可調用調試器,并且讓設置調試器和調用調試器涇渭分明。

其他新的Python 3.7功能

Python 3.7有另外的眾多變更。下面是你在使用最新版本的Python時可能會遇到的其他一些功能:

面向線程本地存儲支持的C-API

PEP 539中描述(https://www.python.org/dev/peps/pep-0539/),線程特定存儲(TSS)API取代了老式的線程本地存儲(TLS)API。如果誰定制CPython或編寫使用解釋器的內部API的CPython擴展件,就要明白這一點。

模塊屬性訪問定制

你在Python程序中創建模塊時,現在可以針對該模塊的實例定制屬性訪問的行為。為此,只需要在模塊里面創建一個__getattr__方法,就跟為一個類創建方法那樣。這樣一來,就可以對諸如請求模塊里面不存在的函數或方法之類的操作進行攔截、標記或代理。

Python importlib資源

importlib模塊現在可用來讀取“資源”,即隨Python應用程序一并交付的二進制工件,比如數據文件。這樣一來,開發人員可以通過importlib的抽象來訪問那些文件,所以它們存儲在系統上某個地方的.zip文件中還是存儲在目錄中并不重要。

底層優化

現在許多單獨的操作更快速了:

由于新的操作碼,方法調用起來最多快20%。(除非你在編寫直接處理Python操作碼的代碼,否則不需要擔心由此帶來的影響。)正則表達式中不區分大小寫的匹配速度更快了,有時要快20倍。

源代碼中的一些常量現在可以更高效地優化。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 东京干手机福利视频 | 可以免费观看的一级毛片 | 久久社区 | 波多野结衣乳巨码无在线观看 | 久久99国产精品一区二区 | 亚洲欧美精品一区 | 九九久久久2 | 天天爆操 | 国产精品人成 | 国产高清精品一区 | 国产69精品久久久久99尤物 | 亚洲码在线中文在线观看 | 神马午夜不卡影院 | 夜色福利视频 | 免费香蕉依人在线视频久 | 一级特黄aa大片一又好看 | 国产一级一级毛片 | 九九久久久久久久爱 | 欧美日韩色黄大片在线视频 | 亚洲精品丝袜在线一区波多野结衣 | 日本不卡高清免费v日本 | xxx大片免费视频 | 日韩免费高清一级毛片久久 | 亚洲欧美在线综合一区二区三区 | 国产精品免费看久久久香蕉 | 亚洲国产高清在线精品一区 | 看特级大黄一片 | 国产福利视频精品 | 亚洲一区二区三区在线免费观看 | 99国产精品久久久久久久日本 | 国产成人系列 | 在线不卡日本 | www.精品在线| 久青草国产高清在线视频 | 99只有精品 | 不卡影院网 | 曰韩毛片 | 青青青爽国产在线视频 | 97人人在线 | 123日本不卡在线观看 | 精品视频一区二区三区免费 |