最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python3.7 的新特性詳解

 更新時(shí)間:2019年07月25日 09:57:49   作者:pythonlian  
這篇文章主要介紹了python3.7 的新特性詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

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

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

Python 3.7最重要的添加和改進(jìn)之處包括如下:

  • 用類處理數(shù)據(jù)時(shí)減少樣板代碼的數(shù)據(jù)類。
  • 一處可能無法向后兼容的變更涉及處理生成器中的異常。
  • 面向解釋器的“開發(fā)模式”。
  • 具有納秒分辨率的時(shí)間對(duì)象。
  • 環(huán)境中默認(rèn)使用UTF-8編碼的UTF-8模式。
  • 觸發(fā)調(diào)試器的一個(gè)新的內(nèi)置函數(shù)。

Python數(shù)據(jù)類

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

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

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

Python生成器異常處理

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

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

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

Python開發(fā)模式

Python解釋器新的命令行開關(guān):-X讓開發(fā)人員可以為解釋器設(shè)置許多低級(jí)選項(xiàng)。在Python 3.7中,選項(xiàng)-X dev啟用“開發(fā)模式”,這種運(yùn)行時(shí)檢查機(jī)制通常對(duì)性能有重大影響,但在調(diào)試過程中對(duì)開發(fā)人員很有用。

-X dev激活的選項(xiàng)包括:

  • asyncio模塊的調(diào)試模式。這為異步操作提供了更詳細(xì)的日志記錄和異常處理,而異常操作可能很難調(diào)試或推理。
  • 面向內(nèi)存分配器的調(diào)試鉤子。這對(duì)于編寫CPython擴(kuò)展件的那些人很有用。它能夠?qū)崿F(xiàn)更明確的運(yùn)行時(shí)檢查,了解CPython如何在內(nèi)部分配內(nèi)存和釋放內(nèi)存。
  • 啟用faulthandler模塊,那樣發(fā)生崩潰后,traceback始終轉(zhuǎn)儲(chǔ)出去。

具有納秒分辨率的Python時(shí)間函數(shù)

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

新的時(shí)間函數(shù)使用后綴_ns。比如說,time.process_time()的納秒版本是time.process_time_ns()。請(qǐng)注意,并非所有的時(shí)間函數(shù)都有對(duì)應(yīng)的納秒版本,因?yàn)槠渲幸恍r(shí)間函數(shù)并不得益于此。

Python UTF-8模式

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

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

內(nèi)置breakpoint()函數(shù)

Python隨帶內(nèi)置的調(diào)試器,不過它也可以連入到第三方調(diào)試工具,只要它們能與Python的內(nèi)部調(diào)試API進(jìn)行對(duì)話。不過,Python到目前為止缺少一種從Python應(yīng)用程序里面以編程方式觸發(fā)調(diào)試器的標(biāo)準(zhǔn)化方法。

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

其他新的Python 3.7功能

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

面向線程本地存儲(chǔ)支持的C-API

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

模塊屬性訪問定制

你在Python程序中創(chuàng)建模塊時(shí),現(xiàn)在可以針對(duì)該模塊的實(shí)例定制屬性訪問的行為。為此,只需要在模塊里面創(chuàng)建一個(gè)__getattr__方法,就跟為一個(gè)類創(chuàng)建方法那樣。這樣一來,就可以對(duì)諸如請(qǐng)求模塊里面不存在的函數(shù)或方法之類的操作進(jìn)行攔截、標(biāo)記或代理。

Python importlib資源

importlib模塊現(xiàn)在可用來讀取“資源”,即隨Python應(yīng)用程序一并交付的二進(jìn)制工件,比如數(shù)據(jù)文件。這樣一來,開發(fā)人員可以通過importlib的抽象來訪問那些文件,所以它們存儲(chǔ)在系統(tǒng)上某個(gè)地方的.zip文件中還是存儲(chǔ)在目錄中并不重要。

底層優(yōu)化

現(xiàn)在許多單獨(dú)的操作更快速了:

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

源代碼中的一些常量現(xiàn)在可以更高效地優(yōu)化。

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • python中reversed與reverse的區(qū)別解析

    python中reversed與reverse的區(qū)別解析

    reverse()是python中列表的一個(gè)內(nèi)置方法(在字典、字符串和元組中沒有這個(gè)內(nèi)置方法),用于列表中數(shù)據(jù)的反轉(zhuǎn),這篇文章主要介紹了python中reversed與reverse的區(qū)別,需要的朋友可以參考下
    2023-03-03
  • 詳解python itertools功能

    詳解python itertools功能

    itertools是python內(nèi)置的模塊,使用簡單且功能強(qiáng)大,這里嘗試匯總整理下,并提供簡單應(yīng)用示例,這篇文章主要介紹了python itertools功能,需要的朋友可以參考下
    2020-02-02
  • Python的string模塊中的Template類字符串模板用法

    Python的string模塊中的Template類字符串模板用法

    通過string.Template我們可以為Python定制字符串的替換標(biāo)準(zhǔn),這里我們就來通過示例解析Python的string模塊中的Template類字符串模板用法:
    2016-06-06
  • python實(shí)現(xiàn)斗地主分牌洗牌

    python實(shí)現(xiàn)斗地主分牌洗牌

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)斗地主分牌洗牌,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • python if三元表達(dá)式實(shí)例用法詳解

    python if三元表達(dá)式實(shí)例用法詳解

    在本篇文章里小編給大家整理的是一篇關(guān)于python if三元表達(dá)式實(shí)例用法詳解內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2021-04-04
  • python圖形界面tkinter的使用技巧

    python圖形界面tkinter的使用技巧

    這篇文章主要介紹了python圖形界面tkinter的使用技巧,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-09-09
  • jupyter notebook 參數(shù)傳遞給shell命令行實(shí)例

    jupyter notebook 參數(shù)傳遞給shell命令行實(shí)例

    這篇文章主要介紹了jupyter notebook 參數(shù)傳遞給shell命令行實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • 一文帶你了解Python中pymysql的使用

    一文帶你了解Python中pymysql的使用

    pymysql就是聯(lián)通mysql實(shí)現(xiàn)python窗口與mysql數(shù)據(jù)庫交互的庫,十分方便操作,這篇文章將詳細(xì)說明如何掌握并使用該庫,感興趣的可以了解一下
    2023-02-02
  • 使用python如何將數(shù)據(jù)集劃分為訓(xùn)練集、驗(yàn)證集和測(cè)試集

    使用python如何將數(shù)據(jù)集劃分為訓(xùn)練集、驗(yàn)證集和測(cè)試集

    這篇文章主要介紹了使用python如何將數(shù)據(jù)集劃分為訓(xùn)練集、驗(yàn)證集和測(cè)試集問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Python?ctypes庫底層交互秘籍實(shí)例探究

    Python?ctypes庫底層交互秘籍實(shí)例探究

    ctypes是Python標(biāo)準(zhǔn)庫中的外部函數(shù)庫,允許Python調(diào)用動(dòng)態(tài)鏈接庫中的函數(shù),它提供了與C兼容的數(shù)據(jù)類型和允許Python調(diào)用共享庫中的函數(shù),對(duì)系統(tǒng)級(jí)編程和與硬件交互非常有用
    2024-01-01

最新評(píng)論

鄯善县| 庆城县| 西宁市| 柳河县| 沁阳市| 东至县| 大冶市| 旌德县| 巴彦淖尔市| 水城县| 化隆| 贵阳市| 临海市| 延安市| 芜湖市| 遂平县| 娱乐| 栾城县| 紫阳县| 长岭县| 阿瓦提县| 平邑县| 泗洪县| 阿荣旗| 龙里县| 信阳市| 怀柔区| 武鸣县| 商河县| 克山县| 唐海县| 泸水县| 盐亭县| 浦城县| 河津市| 天门市| 祁阳县| 呼玛县| 施秉县| 开阳县| 微山县|