日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python3.8新特性 逻辑表达式_Python3.8正式发布!新特性解析在这里

發(fā)布時間:2025/3/13 python 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python3.8新特性 逻辑表达式_Python3.8正式发布!新特性解析在这里 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Python3.8正式發(fā)布!新特性解析在這里

詩書塞外 Python程序員

10月14日,Python 3.8 正式版發(fā)布。這也意味著一個Python開發(fā)周期的結(jié)束,和另一個開發(fā)周期的開始。Python 3.9 預(yù)計在2020年10月份發(fā)布。

那么Python 3.8都帶來了什么新特性和什么新改動呢?讓我們來盤點一下。

新特性

1、賦值表達式

顧名思義,就是在表達式中進行賦值。這個特性總體來說是一個語法糖,讓代碼看起來更簡潔了一點點。比如,下面這段代碼:

n = len(a)

if (n) > 10:

print(f"List is too long ({n} elements, expected <= 10)")

在Python 3.8中可以寫為:

if (n := len(a)) > 10:

print(f"List is too long ({n} elements, expected <= 10)")

如果n這個變量只有在if語句及子句中使用,那么明顯Python 3.8的寫法更為簡潔。其中Python 3.8中用到的操作符:=被稱為海象操作符(因為這個操作符看起來像海象的眼睛和一對兒長牙)。

嗯,你看,像不像?

這個特性的另外兩個典型例子是在while語句,以及列表推導(dǎo)中,像這樣:

# Loop over fixed length blocks

while (block := f.read(256)) != '':

process(block)

[clean_name.title() for name in names

if (clean_name := normalize('NFC', name)) in allowed_names]

2、限定位置參數(shù)

這個特性允許你通過在函數(shù)參數(shù)列表中加一個"/",來表示"/"之前的參數(shù)只能夠當作位置參數(shù)使用。下面我們看一個例子:

def f(a, b, /, c, d, *, e, f):

print(a, b, c, d, e, f)

這個例子中,a、b只能當作位置參數(shù)使用,e、f只能當作關(guān)鍵字參數(shù)使用(如果你不知道為什么,請復(fù)習*和**的用法),而c、d即可以用作位置參數(shù),也可以用作關(guān)鍵字參數(shù)。

這個特性主要是庫或者基礎(chǔ)代碼的作者使用,它讓基礎(chǔ)代碼的作者不必為參數(shù)起一個固定的名字,參數(shù)名字調(diào)整也不會破壞調(diào)用者的代碼。沒有這個特性之前,有的調(diào)用者會對每個參數(shù)都以關(guān)鍵字參數(shù)的形式調(diào)用,這就導(dǎo)致了庫作者一改參數(shù)名,調(diào)用代碼就崩潰。

另外,還有的庫函數(shù)根本不適合用名字傳參,比如我們常見的add函數(shù),add(1, 2)明顯表意性要好于add(a=1, b=2),add的參數(shù)無論起什么名字,都感覺是多余的。

3、支持將編譯字節(jié)碼文件輸出到其他位置

Python項目中一個常見的麻煩就是清理git代碼庫中的pycache文件,這些文件往往是你一不小心就添加進去了,清理起來卻頗為麻煩。Python 3.8支持通過設(shè)置環(huán)境變量 PYTHONPYCACHEPREFIX ,讓pycache生成到其他位置,而不跟.py文件混在一起。你在代碼中可以通過 sys.pycache_prefix 查看生成的位置。

4、F字符串內(nèi)的'='表達式

在調(diào)試的時候,你是否經(jīng)常會寫這樣的代碼?

>>> user = 'eric_idle'

>>> member_since = date(1975, 7, 31)

>>> f'user={user} member_since={member_since}'

"user='eric_idle' member_since=datetime.date(1975, 7, 31)"

其中user={user},member_since={member_since}就是典型的樣板代碼。在Python 3.8中,你可以簡寫為:

>>> user = 'eric_idle'

>>> member_since = date(1975, 7, 31)

>>> f'{user=} {member_since=}'

"user='eric_idle' member_since=datetime.date(1975, 7, 31)"

一個等號,f字符串就知道你需要在等號后面繼續(xù)把等號前面變量的值顯示出來。對于調(diào)試來說,這確實更加簡潔了。

5、pickle協(xié)議5,獨立處理內(nèi)存中的數(shù)據(jù)緩存。

Python進程之間傳輸數(shù)據(jù)時,pickle是經(jīng)常用到的。對于數(shù)據(jù)量大的情況,妥善管理并優(yōu)化內(nèi)存使用是非常重要的。Python3.8 中對pickle的數(shù)據(jù)傳輸做了優(yōu)化,提高了性能和效率。

其他改動

1、finally語句中可以有continue子句了,以前是不行的。

2、函數(shù)調(diào)用時,f((keyword)=arg) 這種寫法不再允許了。

3、新增模塊importlib.metadata,用以讀取第三方包的信息。

◆ ◆ ◆ ◆ ◆

今日簽到口令:pf2x

以上就是小編總結(jié)的大家應(yīng)該會比較感興趣的特性和改動了,如果您想查看完整的changelog,請訪問這個地址(點擊閱讀原文也可以):

https://docs.python.org/3.9/whatsnew/3.8.html

總結(jié)

以上是生活随笔為你收集整理的python3.8新特性 逻辑表达式_Python3.8正式发布!新特性解析在这里的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。