欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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ù)變得簡(jiǎn)單,最新版本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è)裝飾器,能夠以異常簡(jiǎn)單的方式重現(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è)簡(jiǎn)易的方法是使用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)用,因而使代碼更冗長(zhǎng)。而有了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)化。

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

相關(guān)文章

  • python求絕對(duì)值的三種方法小結(jié)

    python求絕對(duì)值的三種方法小結(jié)

    今天小編就為大家分享一篇python求絕對(duì)值的三種方法小結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • 一文詳解python如何將編寫的模塊打包上傳至pypi

    一文詳解python如何將編寫的模塊打包上傳至pypi

    我們此前花了很大功夫?qū)懥艘粋€(gè)極其簡(jiǎn)單的web框架myWeb,想要給別人用的時(shí)候,需要讓別人拷貝源代碼才行,這太low了,所以本篇文章會(huì)介紹如何將自己寫的模塊打包上傳至pypi,以便讓需要的人通過pip進(jìn)行安裝,感興趣的同學(xué)可以參考閱讀
    2023-05-05
  • 一文帶你了解Python中的數(shù)據(jù)序列化與反序列化

    一文帶你了解Python中的數(shù)據(jù)序列化與反序列化

    Python提供了豐富的工具和庫來處理數(shù)據(jù)序列化與反序列化,本文帶領(lǐng)大家一起學(xué)習(xí),包括基本概念、常見的序列化格式、示例和最佳實(shí)踐,快跟隨小編一起學(xué)習(xí)起來吧
    2023-10-10
  • 利用Python中的pandas庫對(duì)cdn日志進(jìn)行分析詳解

    利用Python中的pandas庫對(duì)cdn日志進(jìn)行分析詳解

    這篇文章主要介紹了利用Python中的pandas庫進(jìn)行cdn日志分析的相關(guān)資料,文中分享了pandas對(duì)cdn日志分析的完整示例代碼,然后詳細(xì)介紹了關(guān)于pandas庫的相關(guān)內(nèi)容,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-03-03
  • python之yield和return的對(duì)比分析

    python之yield和return的對(duì)比分析

    這篇文章主要介紹了python之yield和return的對(duì)比分析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • 利用python為PostgreSQL的表自動(dòng)添加分區(qū)

    利用python為PostgreSQL的表自動(dòng)添加分區(qū)

    這篇文章主要介紹了利用python為PostgreSQL的表自動(dòng)添加分區(qū),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • Python中處理字符串之endswith()方法的使用簡(jiǎn)介

    Python中處理字符串之endswith()方法的使用簡(jiǎn)介

    這篇文章主要介紹了Python中處理字符串之endswith()方法的使用,是Python入門中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-05-05
  • Python flask框架請(qǐng)求體數(shù)據(jù)、文件上傳、請(qǐng)求頭信息獲取方式詳解

    Python flask框架請(qǐng)求體數(shù)據(jù)、文件上傳、請(qǐng)求頭信息獲取方式詳解

    這篇文章主要介紹了Python flask框架請(qǐng)求體數(shù)據(jù)、文件上傳、請(qǐng)求頭信息獲取方式詳解,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2024-03-03
  • tensorflow多維張量計(jì)算實(shí)例

    tensorflow多維張量計(jì)算實(shí)例

    今天小編就為大家分享一篇tensorflow多維張量計(jì)算實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • 詳解Python中最常用的10個(gè)內(nèi)置函數(shù)

    詳解Python中最常用的10個(gè)內(nèi)置函數(shù)

    Python作為一種多用途編程語言,擁有豐富的內(nèi)置函數(shù)庫,這些函數(shù)可以極大地提高開發(fā)效率,本文將介紹Python中最常用的10個(gè)內(nèi)置函數(shù),我們將深入了解每個(gè)函數(shù),并提供示例代碼以幫助您更好地理解它們,需要的朋友可以參考下
    2023-11-11

最新評(píng)論