來京東參與榮耀Magic7 RSR 保時捷設(shè)計預(yù)售 享365天只換不修國補(bǔ)期間電視迎來換機(jī)潮,最暢銷MiniLED品牌花落誰家?美團(tuán)旗下微信社群團(tuán)購業(yè)務(wù)“團(tuán)買買”宣布年底停運(yùn)消息稱微軟正與第三方廠商洽談,試圖合作推出Xbox游戲掌機(jī)設(shè)備在海外,要再造一個京東物流?消息稱蘋果正為AirPods開發(fā)多項健康功能,包括心率監(jiān)測和溫度感應(yīng)一加 Ace 5系列將搭載全新游戲助手:大幅提升游戲體驗東芝全部業(yè)務(wù)實(shí)現(xiàn)盈利,退市裁員重組后終于賺錢真我14 Pro+開始提上日程:1.5K等深四微曲屏+潛望長焦穩(wěn)了消息稱本田和日產(chǎn)計劃明年6月前敲定合并協(xié)議 2026年8月成立控股公司凱迪拉克最新版OTA開啟推送,新增百度語音大模型和QQ音樂等應(yīng)用中國聯(lián)通11月5G套餐用戶凈增127.8萬戶5G確定性工業(yè)基站首商用,工業(yè)互聯(lián)網(wǎng)走上新高度李飛飛團(tuán)隊前瞻性研究 多模態(tài)AI模型初顯空間智能AI終于邁過這道檻!Livekit 開源模型精準(zhǔn)識別“你是否說完”!DeepSeek開源大模型開發(fā)者之一羅福莉?qū)⒓用诵∶?/a>廣汽詳解旗下首款復(fù)合翼飛行汽車 GOVY AirJet:最高飛行速度可達(dá) 250km/h清華大學(xué)聯(lián)合騰訊出品!ColorFlow:自動給黑白漫畫上色,保持角色一致性Adobe推新AI音頻具Sketch2Sound ,只需哼唱和模仿聲音就能創(chuàng)建音效家庭能源智聯(lián)自由 海辰儲能發(fā)布首套免安裝家庭微網(wǎng)系統(tǒng)HeroES
  • 首頁 > 數(shù)據(jù)存儲頻道 > 數(shù)據(jù)庫頻道 > 編程開發(fā)

    那些被忽視的Python核心功能...

    2023年08月07日 15:35:26   來源:51CTO

      編譯 | 王瑞平

      最實(shí)用、最簡單、最優(yōu)美...近些年,大家學(xué)習(xí)Python的熱潮從未消退;無論是數(shù)據(jù)分析還是科學(xué)計算都少不了Python的身影。

      Python也沒有讓人失望,Java用100行代碼寫出的程序,用Python十行就能搞定!

      當(dāng)你要說Hello World時,C語言、Java、Python分別是這樣的:

      一目了然,Python只需一行!

      雖然Python非常容易學(xué)習(xí),但是許多實(shí)踐者只觸及到它的表面,而忽視了深入研究這門語言更高級、更強(qiáng)大的方面,而正是這些被忽視的方面使它如此獨(dú)特和強(qiáng)大。

      ——節(jié)選自《Fluent Python》

      如果你的目標(biāo)是成為一名經(jīng)驗豐富的Python程序員,你一定想了解的更多。因此,讓我們共同了解下你沒聽過的Python核心功能,先從最簡單的排列與組合開始...

      一、功能一:排列與組合

      你可以組合不同的for循環(huán),輸出排列、組合和笛卡爾積等。

      1.排列

      舉個例子:當(dāng)你在排列函數(shù)中輸入{[1,2,3],2}時,會輸出如下結(jié)果:

      2.組合

      當(dāng)你在組合函數(shù)中輸入(‘ABC’,2)時,輸出的排列如下:

      3.笛卡爾積

      笛卡爾積是數(shù)學(xué)中的一種運(yùn)算,用于求兩個集合中所有可能的有序?qū)Α?/p>

      當(dāng)我們用笛卡爾積計算Python時,結(jié)果是這樣的:

      二、功能二:可變的參數(shù)默認(rèn)值

      現(xiàn)在,開始增加難度...

      當(dāng)你每次調(diào)用fib_memo函數(shù)卻不為memo參數(shù)賦值時,它將自動使用定義該函數(shù)時的原始值,公式和代碼如下:

      圖片

      由于在Python中,默認(rèn)參數(shù)是可變的,你也可以像在“for循環(huán)”中一樣在單個腳本中多次執(zhí)行函數(shù),每次執(zhí)行都能自動增加要計算的斐波那契數(shù),而不會超過“最大遞歸深度”限制,因為memo可持續(xù)擴(kuò)展。

      *重要提示:

      請記住,盡管可變的默認(rèn)參數(shù)(如上所述)可以減少代碼,但它可能產(chǎn)生難以解決的bug。有些人將其判定為“陷阱”,而不是功能。因此,你仍需要堅持Python中所透露出的禪意:顯式優(yōu)于隱式。

      就像Hacker news中指出的那樣:if n not in memo比if not n in memo更容易讀取,但是二者輸出結(jié)果相同。

      三、功能三:海象運(yùn)算符

      下面,再來講講比較有趣的“海象運(yùn)算符”...

      “海象運(yùn)算符”是在Python 3.8版本中引入的賦值表達(dá)式運(yùn)算符,用于在表達(dá)式中進(jìn)行賦值操作,其符號為“:=”。這個符號有點(diǎn)像海象的眼睛和獠牙(因此被稱為「海象運(yùn)算符」)。

      它可以被翻譯成英文“whale calculus”,是一種基于單詞語法規(guī)則的特殊運(yùn)算符,用于定義表達(dá)式和一系列操作步驟的語言建模方式。

      顯然,用Python,賦值和檢查返回值是否包含真值變得更容易了:

      四、功能四:單星號(*)和雙星號(**)

      使用(*)可以在將參數(shù)或關(guān)鍵字參數(shù)傳遞給函數(shù)之前解壓縮,讓我們在如下代碼中使用:

      當(dāng)調(diào)用sum_numbers函數(shù)而不解包my_numbers時,會引發(fā)"TypeError",因為該函數(shù)需要輸入兩個單獨(dú)的參數(shù)才能輸出結(jié)果。

      但是,通過使用(*),我們可以解壓縮my_numbers函數(shù)中的值,并將它們作為單獨(dú)的參數(shù)進(jìn)行傳遞,從而產(chǎn)生正確的輸出。

      這種解包技術(shù)不僅適用于元組和列表,也適用于字典。

      當(dāng)關(guān)鍵字作為參數(shù)時,我們可以使用雙星號(**),以如下代碼為例:

      除解壓縮序列以將其作為參數(shù)傳遞給函數(shù)外,你還可以使用它來創(chuàng)建新序列,例如:

      在此過程中,原始數(shù)字列表不受影響,并且你還將擁有一個new_list_numbers 變量,它包括相同列表的副本。

      五、 功能五:any and any

      any和all都是python中的內(nèi)置函數(shù),它們對可迭代對象(如,列表、元組或集合)進(jìn)行操作,并根據(jù)可迭代對象中的元素以Boolean運(yùn)算的形式返回,語句如下:

      你可以將any和all函數(shù)與列表推導(dǎo)式結(jié)合使用,列表推導(dǎo)式返回一個可迭代對象并將其作為參數(shù)傳遞給all函數(shù):

      或任意函數(shù):

      下表列出可迭代對象中用any和all函數(shù)賦值的輸出差異:

      六、功能六:交換變量

      用Python,你可以將參數(shù)打包((=)號右邊)和解包((=)號左邊)結(jié)合起來,并利用此功能交換變量:

      七、功能七:str vs repr

      在字符串處理方面,Python中的str()和repr()有所不同。str()將值轉(zhuǎn)化為前端樣式文本,repr()是后端底層代碼。

      ·str()函數(shù):將值轉(zhuǎn)化為適于人閱讀的形式,面向用戶,返回值具有可讀性、可理解性較強(qiáng)。

      ·repr()函數(shù):將對象轉(zhuǎn)化為供解釋器讀取的形式,面向開發(fā)人員,返回值表示python解釋器內(nèi)部的含義。

      下圖是一個很好的例子:

      如你所見,repr()簡單將時間排列為字符串后輸出;如果你想確定當(dāng)前變量是否包含字符串或時間對象,無法借此識別。

      str()提供了變量持有的實(shí)際對象信息,這些信息在調(diào)試過程中非常有價值。

      八、功能八:擴(kuò)展的迭代解包

      迭代解包可應(yīng)用到任何可迭代對象上,唯一的硬性要求是:被迭代對象中的元素數(shù)量必須與接受這些元素的元組空檔數(shù)一致,也可以使用星號 * 表示忽略多余的元素。

      這種方式的優(yōu)點(diǎn)在于:更好賦值、更好獲取迭代對象中的某個值(一般的迭代對象分為:元組,列表,字典,字符串等)。

      如果你想獲得序列的第一個和最后一個值,需要輸入如下代碼:

      更換輸入和輸出語句后同樣可行...

      其它組合也同樣適用...

      九、功能九:多個上下文管理器

      通常,我們習(xí)慣一次性使用一個上下文管理器,比如,當(dāng)你打開一個程序文件,需要輸入如下代碼:

      但是,在Python中,用一行語句就能打開多個文件。如果你想將行寫入其它文件,用Python語句就很容易實(shí)現(xiàn),例如:

      十、功能十:調(diào)試程序

      為達(dá)到調(diào)試目的,我們可以在文件中輸出大量變量或可以簡單使用Python調(diào)試器(pdb),它可以幫我們設(shè)置斷點(diǎn):

      程序?qū)⒃跀帱c(diǎn)處停止,你可以在該斷點(diǎn)處獲取任何變量以檢查其值或該特定斷點(diǎn)是否存在。當(dāng)程序遇到斷點(diǎn)時,可使用如下幾個命令:

      n或next:執(zhí)行下一行。

      s或step:進(jìn)入功能調(diào)用。

      c或continue:繼續(xù)執(zhí)行,直到下一個斷點(diǎn)。

      l或list:顯示當(dāng)前代碼的上下文。

      p 或pp :打印表達(dá)式的值。

      b 或break :在指定的行上設(shè)置新斷點(diǎn)。

      h或help:在使用pdb時提供幫助。

      q或quit:退出調(diào)試器并終止程序。

      十一、功能十一:collections模塊中的Counter

      collections模塊中的Counter類提供了一種便捷的方法,可以對可迭代對象中的元素進(jìn)行計數(shù):

      圖片

      十二、功能十二:使用下劃線的兩種情況

      在Python中有兩種需要用到下劃線:多位數(shù)分隔或排除不需要的值。

      1.排除不需要的值

      下劃線 _ 可被用作排除不需要的值:

      2.多位數(shù)分隔符

      在處理多位數(shù)時,可以使用下劃線 (_) 作為視覺分隔符,能增強(qiáng)可讀性。這個功能是在Python3.6中被引入的。

      十三、用戶:簡單、實(shí)用但范圍有限

      在reddit上,我們找到了關(guān)于用戶關(guān)于本篇文章的181條評論:

      正如文章開頭所述,他們認(rèn)為:“用Python調(diào)試出的程序確實(shí)簡單、實(shí)用。”

      話雖如此,有些用戶也提出了質(zhì)疑:“Pythonic的過濾器和映射方式更具可讀性,但是范圍有限。”

      但這一點(diǎn)也不影響用戶對Python的喜愛!

      十四、寫在最后:Python是你成為全棧工程師的必備武器

      前端開發(fā)、后端開發(fā)、項目測試...如果你想成為一名合格的全棧工程師,Python是你不可或缺的“武器”。

      在開發(fā)領(lǐng)域如此內(nèi)卷的情況下,要完成一個現(xiàn)代化項目,需要一個人來掌控全局,他不需要是各種技術(shù)的資深專家,但需要熟悉各種技術(shù)。對于一個團(tuán)隊特別是互聯(lián)網(wǎng)企業(yè)來說,全局性思維的人真的不可多得。

      文章內(nèi)容僅供閱讀,不構(gòu)成投資建議,請謹(jǐn)慎對待。投資者據(jù)此操作,風(fēng)險自擔(dān)。

    即時

    新聞

    明火炊具市場:三季度健康屬性貫穿全類目

    奧維云網(wǎng)(AVC)推總數(shù)據(jù)顯示,2024年1-9月明火炊具線上零售額94.2億元,同比增加3.1%,其中抖音渠道表現(xiàn)優(yōu)異,同比有14%的漲幅,傳統(tǒng)電商略有下滑,同比降低2.3%。

    企業(yè)IT

    重慶創(chuàng)新公積金應(yīng)用,“區(qū)塊鏈+政務(wù)服務(wù)”顯成效

    “以前都要去窗口辦,一套流程下來都要半個月了,現(xiàn)在方便多了!”打開“重慶公積金”微信小程序,按照提示流程提交相關(guān)材料,僅幾秒鐘,重慶市民曾某的賬戶就打進(jìn)了21600元。

    3C消費(fèi)

    華碩ProArt創(chuàng)藝27 Pro PA279CRV顯示器,高能實(shí)力,創(chuàng)

    華碩ProArt創(chuàng)藝27 Pro PA279CRV顯示器,憑借其優(yōu)秀的性能配置和精準(zhǔn)的色彩呈現(xiàn)能力,為您的創(chuàng)作工作帶來實(shí)質(zhì)性的幫助,雙十一期間低至2799元,性價比很高,簡直是創(chuàng)作者們的首選。

    研究

    中國信通院羅松:深度解讀《工業(yè)互聯(lián)網(wǎng)標(biāo)識解析體系

    9月14日,2024全球工業(yè)互聯(lián)網(wǎng)大會——工業(yè)互聯(lián)網(wǎng)標(biāo)識解析專題論壇在沈陽成功舉辦。