幾招冷門(mén)!但是很有用的Python招數(shù)!
大家好,我是菜鳥(niǎo)哥!
Python 目前是最火最流行的語(yǔ)言之一。它以其簡(jiǎn)單的語(yǔ)法和強(qiáng)大的功能,受到很多同學(xué)的喜歡。最爽的是它有強(qiáng)大的庫(kù)和社區(qū)支持,讓你開(kāi)發(fā)應(yīng)用非常方便快捷。
今天菜鳥(niǎo)哥給大家分享幾招,平時(shí)不常用有點(diǎn)冷門(mén),但是非常有用的招數(shù),大家趕緊拿起電腦操練起來(lái)。
01.Named Tuples
命名元組是易于創(chuàng)建的輕量級(jí)對(duì)象類(lèi)型。它是 Python Collections模塊中可用的工廠函數(shù)。如果你想要一個(gè)類(lèi)來(lái)管理數(shù)據(jù),你可以考慮使用命名元組作為替代。
用nametuple創(chuàng)建一個(gè)元組類(lèi)既簡(jiǎn)單又直接,比起用重量級(jí)的class要方便很多,對(duì)于很多數(shù)據(jù)結(jié)構(gòu)簡(jiǎn)單的類(lèi)可以直接使用,非常輕巧。
2. For...Else 子句
平時(shí)我們太習(xí)慣用if/else語(yǔ)句了,但是我們很少或者不怎么習(xí)慣把for和else進(jìn)行配合,這個(gè)組合也是Python獨(dú)有的,有它的獨(dú)特的使用場(chǎng)景。
在 For...else 子句中,如果for循環(huán)的迭代完成,則執(zhí)行else子句。如果 for 循環(huán)中的迭代由于 break 語(yǔ)句而中斷,在這種情況下,else子句不會(huì)被執(zhí)行。
for/else的用法有點(diǎn)反人性,它的意思就是如果你的for循環(huán)是正常結(jié)束的,那么就來(lái)我else這邊跑一下;
如果你的for沒(méi)有完整的運(yùn)行結(jié)束,中間有退出的break,那么else部分則不執(zhí)行。我們?cè)趯?shí)際的項(xiàng)目里面搜索文件一般用的比較多。
例如:
3.參數(shù)的拆包
我們?cè)谠O(shè)計(jì)函數(shù)的時(shí)候,有的時(shí)候需要帶有多個(gè)參數(shù)進(jìn)行傳遞,如果這樣寫(xiě)會(huì)很丑,比如我們下面設(shè)計(jì)的add函數(shù),其實(shí)就是把傳入的參數(shù)進(jìn)行相加。如果用add(*list)就可以方便的搞定。
當(dāng)傳遞給函數(shù)時(shí),Python 本身不會(huì)解壓列表、元組或字典,必須使用*并且**必須成功地將它們傳遞給函數(shù)。
4.愛(ài)上pprint
我們大部分打印的時(shí)候用print,但是實(shí)際上還有一個(gè)非常有用的打印叫pprint,其實(shí)就是比print多一個(gè)p。它的好處在于你需要打印很多復(fù)雜的字典或者嵌套的很長(zhǎng)的序列的時(shí)候用pprint打印會(huì)豎起來(lái)打印,然后我們觀察結(jié)果非常清晰,很方便,在實(shí)際的項(xiàng)目中經(jīng)常用到。
看一下輸出結(jié)果:
第一種普通的打印就非常丑,很長(zhǎng),如果是復(fù)雜的嵌套字典我們debug觀察的時(shí)候就非常費(fèi)勁。
[{'status': 200, 'result': [1, 2, 3, 4, 5]}, {'status': 'OK', 'result': ['Hello', 'World']}, {'status': 404, 'result': 'Data not found'}]
第二種用了ppring去打印就非常人性化,直接豎起來(lái)顯示,就很直觀。
[{'result': [1, 2, 3, 4, 5], 'status': 200},
{'result': ['Hello', 'World'], 'status': 'OK'},
{'result': 'Data not found', 'status': 404}]
5. enum 枚舉
枚舉菜鳥(niǎo)哥玩Python這么多年都沒(méi)有怎么用過(guò),感覺(jué)這個(gè)知識(shí)點(diǎn)一般都是用在C語(yǔ)言里面比較多,今天才知道原來(lái)Python也可以用enum。
我們?cè)O(shè)計(jì)一個(gè)簡(jiǎn)單的枚舉類(lèi)型Season,給它賦值春夏秋冬,然后就可以非常方便的對(duì)其進(jìn)行使用。當(dāng)然你也可以這樣使用:
用一個(gè)類(lèi)來(lái)繼承父類(lèi)Enum,然后利用Enum的內(nèi)置屬性進(jìn)行操作,算是借力打力。
好,以上就是今天分享的幾個(gè)冷門(mén)的Python技巧,但是雖然說(shuō)冷門(mén)其實(shí)還蠻實(shí)用的,大家在平時(shí)實(shí)戰(zhàn)的項(xiàng)目中可以使用起來(lái),會(huì)讓你功力大增。
好,我們下一篇文章見(jiàn)。如果你喜歡我們的文章,歡迎持續(xù)關(guān)注「菜鳥(niǎo)學(xué)Python」,大家在留言區(qū)吱一聲,記得給個(gè)三連哦!