新聞動(dòng)態(tài)
Python 3.8 到來,晨展科技帶你了解 6 大重要新特性
行業(yè)資訊 發(fā)布者:cya 2020-01-14 08:53 訪問量:309
一個(gè)有活力的編程語言,總是動(dòng)態(tài)變化以適應(yīng)技術(shù)的發(fā)展。2020年1月1日起,Python 2 將不再得到官方支持,這也基本宣告了它的死亡。
而在數(shù)據(jù)科學(xué)熱潮的推動(dòng)下,以 Python 3 為主的 Python 語言依然是世界上最流行的編程語言。隨著版本的更迭,它的語法不斷更新,有了許多新形式的表達(dá)式。想要保持對(duì) python 的“追更”是很難的,但有一些相見恨晚的功能,值得你早點(diǎn)掌握。
于是,我們幫你整理好了這次 Python 3.8 更新中你應(yīng)該了解的六大新特性,一起來看看吧!
■ 1. 賦值表達(dá)式——可讀性
這個(gè)新的運(yùn)算符 := 被稱為海象運(yùn)算符,因?yàn)?span style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;"> := 很像小眼睛長牙齒的海象。它能讓你把一行語句中的某一個(gè)表達(dá)式賦值給一個(gè)變量,同時(shí)不影響該語句的原始邏輯。這應(yīng)該是 Python 3.8 中被人討論最多的一個(gè)新功能了。可以看下面的例子:
第 4 行中,賦值語句 b := a**2 將 a 的平方賦值給了 b,同時(shí)又讓 b 參與了布爾運(yùn)算 b > 0:
這樣的賦值語句可以讓你的代碼更加緊湊,同時(shí)保持良好的可讀性。但注意不要濫用它,否則在某些情況下可能會(huì)讓你的代碼變得更加難懂:
(千萬別這么干?。?/span>
這個(gè)運(yùn)算符在許多(古老的)編程語言中也存在,我預(yù)計(jì)有許多從其他語言切換到 Python 的程序員都會(huì)(濫)用這個(gè)新功能來給表達(dá)式賦值。
搶在別人前面熟悉這個(gè)特性吧。
■ 2. 參數(shù)類型——可靠性
在 Python 中,一個(gè)函數(shù)可以接受兩種不同方式指定的參數(shù):
位置參數(shù):按其傳入的順序賦值給對(duì)應(yīng)位置的參數(shù);
關(guān)鍵字參數(shù):依據(jù)給定的關(guān)鍵字賦值給對(duì)應(yīng)的參數(shù)。
在下面這個(gè)例子中,函數(shù)內(nèi) a 和 b 兩個(gè)參數(shù)的值分別按照位置參數(shù)和關(guān)鍵字參數(shù)的方式進(jìn)行指定,十分靈活。
新版本的 Python 3 提供了一個(gè)額外的語法糖,用來指明某些參數(shù)必須使用僅限位置而非關(guān)鍵字參數(shù)的形式。具體用法為使用 / 和 * 符號(hào)對(duì)參數(shù)列表進(jìn)行分隔。
*注:后面的“*”語法并不是 Python 3.8 里新增的。
在下面的例子中,頭兩個(gè)參數(shù) a 和 b 只能用位置參數(shù),中間兩個(gè)參數(shù) c 和 d 可以任意使用關(guān)鍵字或位置方式指定,最后兩個(gè)參數(shù) e 和 f 只能用關(guān)鍵字參數(shù)。
為什么需要限制這種靈活性呢?如果你的參數(shù)名沒有什么意義,或者是隨便取的(比如 a、b、i、j 這樣),那你應(yīng)該排除使用關(guān)鍵字傳遞的方式,免得未來你重構(gòu)或是修改這個(gè)函數(shù)的時(shí)候,改動(dòng)參數(shù)的變量名稱會(huì)讓其他調(diào)用代碼出錯(cuò)。這樣就能讓你的代碼更加的穩(wěn)定健壯。
■ 3. f 字符串 2.0 版——方便調(diào)試
Python 的 f 字符串是一個(gè)創(chuàng)舉。它使你可以用優(yōu)雅易懂的方式格式化輸出包含表達(dá)式的字符串。它的基本語法是 f'{expr}' ,其中需要計(jì)算的表達(dá)式被大括號(hào)括起來,在字符串引號(hào)的前面,用字母 f 進(jìn)行標(biāo)記。
本次更新給 f 字符串帶來了一個(gè)新的格式化標(biāo)記:等號(hào)“=”。在 f 字符串里,等號(hào)跟在表達(dá)式的末尾,語法為:f'{expr=}',輸出的字符串將包含變量名稱和其對(duì)應(yīng)的值,如下面這個(gè)例子所示:
這樣,在調(diào)試時(shí),我們就能方便簡潔地打出變量的值,而不必寫 print('pi =',pi) 這樣重復(fù)的語句了。
■ 4. 反向迭代字典——順序
現(xiàn)在 dict 和 dictview 可以使用 reversed() 按插入順序反向迭代。
■ 5. 新增模塊——metadata(元數(shù)據(jù))
新增的 importlib.metadata 模塊使你能夠從第三方包讀取元數(shù)據(jù)。例如,你能用代碼取得其他包的版本號(hào)之類的信息。
■ 6. 在 finally 中使用 Continue
由于在實(shí)現(xiàn)中存在問題,之前在 finally 子句中不允許使用 continue 語句。在 Python 3.8 中這個(gè)限制已經(jīng)被取消了。
■ 一些思考
請(qǐng)注意,本文并未提及Python3.8中新增的一些和普通程序員不太相關(guān)的高級(jí)特性(比如新的 pickle 協(xié)議,以及新的 multiprocessing.shared_memory 模塊等)。
因為如果你只是為了做些小項(xiàng)目,犯不著為了那些概念費(fèi)神。如果你真的好奇的話,可以在這里看到完整的更新內(nèi)容說明:https://docs.python.org/zh-cn/3/whatsnew/3.8.html
上面提到的 6 個(gè)新特性,就是本次 Python 3.8 更新中對(duì)新人(初學(xué)者)比較有用的部分啦。但還是順帶提個(gè)醒,在你切換到 Python 3.8之前,請(qǐng)確保已經(jīng)熟練掌握了最基礎(chǔ)的 Python 概念吧!
祝編程愉快!
關(guān)鍵字: Python 3.8 開封晨展科技
文章連接: http://www.weemall.cn/hyzx/680.html
版權(quán)聲明:文章由 晨展科技 整理收集,來源于互聯(lián)網(wǎng)或者用戶投稿,如有侵權(quán),請(qǐng)聯(lián)系我們,我們會(huì)立即刪除。如轉(zhuǎn)載請(qǐng)保留
晨展解決方案
晨展新聞