中文字幕国产91无码|AV成人手机在线|av成人先锋在线|911无码在线国产人人操|91蜜桃视频精品免费在线|极品美女A∨片在线看|日韩在线成人视频日韩|电影三级成人黄免费影片|超碰97国产在线|国产成人精品色情免费视频

  • +1

Python3.10第二個(gè)alpha版本來了,最新特性值得關(guān)注

2020-11-27 07:13
來源:澎湃新聞·澎湃號(hào)·湃客
聽全文
字號(hào)

選自towardsdatascience

作者:James Briggs

機(jī)器之心編譯

編輯:陳萍

Python3.10 的第二個(gè) alpha 版本已在 11 月初發(fā)布,相比于不久前發(fā)布的 3.9 版本,新版本對(duì)類型注釋擴(kuò)展、zip、位計(jì)數(shù)、字典映射又有了新的改進(jìn)。

Python3.9 剛剛發(fā)布不久,Python3.10 的第二個(gè) alpha 版本也已于 11 月初發(fā)布。透過這個(gè)版本,我們或許可以一窺 Python 的未來改變。

Python3.10 第二個(gè) alpha 版本的新功能包括以下三大部分:

類型注釋擴(kuò)展

為什么類型注釋很重要

新方法和行為

類型注釋擴(kuò)展

Python3.9 版本對(duì)類型提示與注釋進(jìn)行了徹底的修改和清理。Python3.10 版本似乎延續(xù)了這一趨勢,Python3.10 alpha 2 版本將類型注釋功能進(jìn)行了擴(kuò)展。

從 Python 3.0 到 Python 3.10 類型注釋的變化。

類型注釋的延遲評(píng)估

類型注釋的評(píng)估始終在函數(shù)定義時(shí)執(zhí)行,這意味著類型注釋以自上而下的方式逐行進(jìn)行評(píng)估。這看似合乎邏輯,但存在兩個(gè)問題:

引用尚未定義的類型(前向引用)的類型提示無效,必須以字符串形式表示。例如應(yīng)該是「“int”」而不是「int」(盡管這僅適用于自定義類型,而不是內(nèi)置 / 預(yù)定義類型)。

由于需要執(zhí)行類型提示,模塊導(dǎo)入的速度減慢。

因此,注釋將被存儲(chǔ)在 __annotations__,然后進(jìn)行集中評(píng)估,即允許前向引用并首先執(zhí)行模塊導(dǎo)入(以減少初始化時(shí)間)。

Union 操作符類型

Python 3.10 引入了 | 操作符。在注釋數(shù)據(jù)類型時(shí),可以使用 | 作為 OR。例如,存在一個(gè)預(yù)計(jì)為 int 或 float 的變量,我們可以將其寫作 int | float:

def f(x: *int | float*) -> float: return x * 3.142 f(1) # passf(1.5) # passf('str') # linter will show annotation error

在 3.10 之前的版本中,等效運(yùn)算符使用 type.Union 方法進(jìn)行編寫,例如 Union[int, float]。

TypeAlias 注釋

回到前向引用問題,避免前向引用的常見解決方案是將它們作為字符串寫入。

但是,將類型作為字符串編寫,會(huì)在將這些類型分配給變量時(shí)出現(xiàn)問題,因?yàn)?Python 假設(shè)字符串文本類型注釋只是一個(gè)字符串。

在使用類型注釋的地方使用該類型注釋變量將返回錯(cuò)誤。例如:

MyType = "ClassName" # ClassName is our type annotationdef foo() -> MyType: ...

我們正在嘗試使用 MyType 作為類型的別名(alias),但是 MyType 將被讀取為字符串值,而不是類型別名。

只要在后面的代碼中定義了 ClassName,這就是有效的。目前,這將引發(fā)注釋錯(cuò)誤。

為了解決這個(gè)問題,該版本添加了一個(gè)顯式地將 MyType 識(shí)別為類型別名的方法:

from typing_extensions import TypeAliasMyType: TypeAlias = "ClassName"def foo() -> MyType: ...ORMyType: TypeAlias = ClassName # if we have defined ClassName alreadydef foo() -> MyType: ...

為什么類型注釋很重要

Python 的強(qiáng)大之處在于它易于使用和掌握,原因之一就是我們不需要在整個(gè)代碼中顯式地定義類型。

這看似違背常理,但允許開發(fā)人員定義類型可以極大地增強(qiáng)代碼庫的可讀性和可維護(hù)性。例如從 transformers 庫的源代碼中提取如下內(nèi)容:

def get_default_model(targeted_task: Dict, framework: Optional[str], task_options: Optional[Any]) -> str: ...

class DefaultArgumentHandler(ArgumentHandler): ... @staticmethod def handle_kwargs(kwargs: Dict) -> List: ...

@staticmethod def handle_args(args: Sequence[Any]) -> List[str]:

即使沒有上下文,我們也可以讀取這些代碼,并了解應(yīng)該向這些函數(shù)、類和方法提供哪些數(shù)據(jù),以及應(yīng)該返回哪些數(shù)據(jù)類型。

在復(fù)雜的代碼庫(甚至是簡單的代碼庫)中,類型注釋可以極大地提高可讀性。同時(shí),并不是每個(gè)開發(fā)者都想(或需要)使用類型注釋,因此可選的、無異常的功能可以達(dá)到完美的平衡。

新方法和實(shí)現(xiàn)

除了類型注釋方面的更改之外,3.10 alpha 2 版本對(duì)其他核心功能也進(jìn)行了一些更新。

為 Zip 添加等長標(biāo)記

第一個(gè)是 PEP 618,它為 zip() 函數(shù)添加了一個(gè)可選的 strict 標(biāo)記。設(shè)置 strict = True,如果 zip 的兩個(gè)輸入長度不等,則會(huì)引發(fā)錯(cuò)誤。

左側(cè)無 strict=True 標(biāo)記,沒有引發(fā)錯(cuò)誤,并且較長的列表被截?cái)嘤糜趧?chuàng)建壓縮生成器。如果設(shè)置 strict = True,就會(huì)引發(fā)錯(cuò)誤。

整數(shù)的位計(jì)數(shù)

也叫做「總體計(jì)數(shù)」(population count)。這一新方法允許計(jì)算整數(shù)二進(jìn)制表示中 1 的個(gè)數(shù),只需寫 int.bit_count() 即可:

字典視圖映射

三種字典方法 dict.keys()、dict.values() 和 dict.items() 返回字典的不同視圖。現(xiàn)在,將 mapping 屬性添加到每個(gè)視圖對(duì)象。

這一新屬性是 types.MappingProxyType 對(duì)象,用來包裝原始字典。如果在視圖上調(diào)用它,則返回原始字典。

原文鏈接:

https://towardsdatascience.com/new-features-in-python-3-10-66ac05e62fc7

NeurIPS 2020線上分享:面向魯棒深度學(xué)習(xí)的對(duì)抗分布式訓(xùn)練

論文:《Adversarial Distributional Training for Robust Deep Learning》。

本篇論文中,研究者提出了一種名為對(duì)抗分布式訓(xùn)練(adversarial distributional training, ADT)的新型框架。11月26日,清華大學(xué)計(jì)算機(jī)系博士生董胤蓬,為大家詳細(xì)解讀此前沿研究。

識(shí)別二維碼,入群一起看直播。

? THE END

轉(zhuǎn)載請(qǐng)聯(lián)系本公眾號(hào)獲得授權(quán)

投稿或?qū)で髨?bào)道:content@jiqizhixin.com喜歡此內(nèi)容的人還喜歡

原標(biāo)題:《Python3.10第二個(gè)alpha版本來了!最新特性值得關(guān)注》

閱讀原文

    本文為澎湃號(hào)作者或機(jī)構(gòu)在澎湃新聞上傳并發(fā)布,僅代表該作者或機(jī)構(gòu)觀點(diǎn),不代表澎湃新聞的觀點(diǎn)或立場,澎湃新聞僅提供信息發(fā)布平臺(tái)。申請(qǐng)澎湃號(hào)請(qǐng)用電腦訪問http://renzheng.thepaper.cn。

            查看更多

            掃碼下載澎湃新聞客戶端

            滬ICP備14003370號(hào)

            滬公網(wǎng)安備31010602000299號(hào)

            互聯(lián)網(wǎng)新聞信息服務(wù)許可證:31120170006

            增值電信業(yè)務(wù)經(jīng)營許可證:滬B2-2017116

            ? 2014-2026 上海東方報(bào)業(yè)有限公司