Python中幾個(gè)非常神奇的代碼的簡(jiǎn)潔骑疆,方便田篇,高效!

Python中幾個(gè)非常神奇的代碼的簡(jiǎn)潔箍铭,方便泊柬,高效!

我一直說(shuō)python是非常優(yōu)美的語(yǔ)言诈火,那到底如何個(gè)美呢兽赁,其中有一個(gè)特性就是簡(jiǎn)潔.很多果粉為啥特別喜歡蘋果手機(jī)和蘋果電腦,一方面確實(shí)做的漂亮冷守,另外一個(gè)就是簡(jiǎn)潔刀崖。你想蘋果手機(jī)開(kāi)機(jī)關(guān)機(jī),刪軟件都是一個(gè)步驟教沾,而我們用win蒲跨,關(guān)機(jī)至少3-5步,刪軟件更不要說(shuō)了授翻,非常麻煩.

有的時(shí)候做產(chǎn)品不是要做加法而且要做減法或悲,并且做到極致(有點(diǎn)跑題了孙咪,我們還是回到python)

我把python里面非常有名的簡(jiǎn)潔,高效巡语,方便的代碼整理出來(lái)翎蹈,讓我們來(lái)一睹她的風(fēng)采。其實(shí)每個(gè)主題展開(kāi)講都是很大的篇幅男公,今天我們先overview一下

看完之后荤堪,相信初學(xué)者會(huì)更快的喜歡上python.

1.列表推導(dǎo)

要說(shuō)python里面最簡(jiǎn)潔最神奇的代碼,列表推導(dǎo)應(yīng)該算排行第一枢赔。

這是一種非常精煉的寫(xiě)法澄阳,可以根據(jù)一份列表來(lái)制作另外一份。這種表達(dá)式稱為list comprehension(列表推導(dǎo))

例子1,利用一個(gè)列表生成一個(gè)新的列表

Python中幾個(gè)非常神奇的代碼的簡(jiǎn)潔踏拜,方便碎赢,高效!

例子2,甚至可以過(guò)濾一些列表中的元素速梗,列如:

Python中幾個(gè)非常神奇的代碼的簡(jiǎn)潔肮塞,方便,高效姻锁!

例子3:若要需要對(duì)序列里面的內(nèi)容進(jìn)行循環(huán)處理時(shí)枕赵,也可以加一個(gè)函數(shù)進(jìn)行組合完成

Python中幾個(gè)非常神奇的代碼的簡(jiǎn)潔,方便位隶,高效拷窜!

看完列表推導(dǎo)的用法,是不是覺(jué)得眼前一亮好很方便啊.

2.with用法

一般我們處理文件都是先打開(kāi)->然后處理->然后關(guān)閉.比較麻煩涧黄,還需要防止異常保護(hù)try/finally装黑,很多時(shí)候我們都把精力集中在如何處理文件這樣會(huì)忘掉關(guān)閉文件.Python里面有一種非常簡(jiǎn)潔的方法:

普通的打開(kāi),關(guān)閉文件處理:

Python中幾個(gè)非常神奇的代碼的簡(jiǎn)潔弓熏,方便,高效糠睡!

用with語(yǔ)句,使用起來(lái)非常簡(jiǎn)單挽鞠,有點(diǎn)像英語(yǔ),用with語(yǔ)句能夠保證當(dāng)寫(xiě)操作執(zhí)行完畢之后,自動(dòng)關(guān)閉文件

Python中幾個(gè)非常神奇的代碼的簡(jiǎn)潔,方便狈孔,高效信认!

其實(shí)with的使用場(chǎng)景非常多,除了對(duì)于文件的處理關(guān)閉均抽,在多線程的使用里面對(duì)鎖的處理也是經(jīng)常使用的 嫁赏。以后的文章會(huì)講python的多線程,多進(jìn)程的使用油挥,會(huì)展開(kāi)講.

with的用法體現(xiàn)了python的一個(gè)精髓:把一些繁瑣的事務(wù)交給語(yǔ)言本身潦蝇,開(kāi)發(fā)者只要focus放在處理問(wèn)題的邏輯上就可以了.

3.匿名函數(shù)lambda

  • python里面有一個(gè)"懶人專用的函數(shù)"款熬,叫做匿名函數(shù)(也就是沒(méi)有函數(shù)名)的函數(shù).我們?cè)趥魅牒瘮?shù)時(shí),有些時(shí)候攘乒,不需要顯式地定義函數(shù)贤牛,直接傳入匿名函數(shù)更方便.
  • lambda(這個(gè)名字其實(shí)是借鑒了另外一個(gè)黑客非常喜歡的語(yǔ)言LISP),lambda一般的形式是關(guān)鍵字lambda 后面跟一個(gè)或者多個(gè)參數(shù),后面緊跟一個(gè)冒號(hào),之后是一個(gè)表達(dá)式:
  • lambda arg1,agr2,...agrN:express using arguments

以map()函數(shù)為例则酝,若要計(jì)算一個(gè)列表里面的每個(gè)元素的平方殉簸,可以直接傳入匿名函數(shù):

map(lambda x: x * x, [1, 2, 3, 4, 5, 6, 7, 8, 9])

[1, 4, 9, 16, 25, 36, 49, 64, 81]

通過(guò)對(duì)比可以看出,匿名函數(shù)lambda x: x * x實(shí)際上就是:

def f(x):

return x * x

用匿名函數(shù)的好處是顯而易見(jiàn)的:

  • 一方面是可以免去取名字的麻煩(因?yàn)楦哔|(zhì)量的代碼對(duì)函數(shù)的取名是有一定的要求的)
  • 而且不必?fù)?dān)心函數(shù)名沖突
  • 此外沽讹,匿名函數(shù)也是一個(gè)函數(shù)對(duì)象般卑,也可以把匿名函數(shù)賦值給一個(gè)變量,再利用變量來(lái)調(diào)用該函數(shù)

4.生成器

生成器是python里面一個(gè)比較難理解的概念爽雄,也是Python中引入的兩個(gè)強(qiáng)大的特性之一(猜猜另外一個(gè)特性是啥蝠检,對(duì)了就是裝飾器)

今天我先來(lái)看一下它的一個(gè)簡(jiǎn)單例子,一個(gè)關(guān)于斐波那契數(shù)列的實(shí)現(xiàn):

Python中幾個(gè)非常神奇的代碼的簡(jiǎn)潔盲链,方便蝇率,高效!

用了生成器的函數(shù):

Python中幾個(gè)非常神奇的代碼的簡(jiǎn)潔刽沾,方便傻工,高效!

看第二種方法代碼是不是簡(jiǎn)潔很多丸氛,這就是yield關(guān)鍵字的魅力.

如果一個(gè)函數(shù)定義中包含yield關(guān)鍵字蛀醉,那么這個(gè)函數(shù)就不再是一個(gè)普通函數(shù),而是一個(gè)生成器函數(shù),打印看一下.

print(fac2(10))

<generator object fac2 at 0x026958F0>

生成器函數(shù)和普通函數(shù)的執(zhí)行流程非常不一樣:

  • 函數(shù)是順序執(zhí)行布蔗,遇到return語(yǔ)句或者最后一行函數(shù)語(yǔ)句就返回藤违。
  • 而變成生成器的函數(shù),只會(huì)相應(yīng)迭代操作時(shí)才運(yùn)行,一般都是配合for使用(也有配合sum(),list())
  • 在每次調(diào)用next()的時(shí)候執(zhí)行纵揍,遇到yield語(yǔ)句返回顿乒,再次執(zhí)行時(shí)從上次返回的yield語(yǔ)句處繼續(xù)執(zhí)行。

好了泽谨,以上幾個(gè)就是python中非常神奇的代碼璧榄,不知道大家看完之后是不是對(duì)python的喜愛(ài)又加深了一分,那就不枉我大半夜敲這么多字了(說(shuō)實(shí)話敲的有點(diǎn)手疼),其實(shí)簡(jiǎn)潔高效就是python的代名詞.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末吧雹,一起剝皮案震驚了整個(gè)濱河市骨杂,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌雄卷,老刑警劉巖搓蚪,帶你破解...
    沈念sama閱讀 221,820評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異丁鹉,居然都是意外死亡妒潭,警方通過(guò)查閱死者的電腦和手機(jī)悴能,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)杜耙,“玉大人搜骡,你說(shuō)我怎么就攤上這事∮优” “怎么了记靡?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,324評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)团驱。 經(jīng)常有香客問(wèn)我摸吠,道長(zhǎng),這世上最難降的妖魔是什么嚎花? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,714評(píng)論 1 297
  • 正文 為了忘掉前任寸痢,我火速辦了婚禮,結(jié)果婚禮上紊选,老公的妹妹穿的比我還像新娘啼止。我一直安慰自己,他們只是感情好兵罢,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,724評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布献烦。 她就那樣靜靜地躺著,像睡著了一般卖词。 火紅的嫁衣襯著肌膚如雪巩那。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,328評(píng)論 1 310
  • 那天此蜈,我揣著相機(jī)與錄音即横,去河邊找鬼。 笑死裆赵,一個(gè)胖子當(dāng)著我的面吹牛东囚,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播战授,決...
    沈念sama閱讀 40,897評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼舔庶,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了陈醒?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,804評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤瞧甩,失蹤者是張志新(化名)和其女友劉穎钉跷,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體肚逸,經(jīng)...
    沈念sama閱讀 46,345評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡爷辙,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,431評(píng)論 3 340
  • 正文 我和宋清朗相戀三年彬坏,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片膝晾。...
    茶點(diǎn)故事閱讀 40,561評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡栓始,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出血当,到底是詐尸還是另有隱情幻赚,我是刑警寧澤,帶...
    沈念sama閱讀 36,238評(píng)論 5 350
  • 正文 年R本政府宣布臊旭,位于F島的核電站落恼,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏离熏。R本人自食惡果不足惜佳谦,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,928評(píng)論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望滋戳。 院中可真熱鬧钻蔑,春花似錦、人聲如沸奸鸯。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,417評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)府喳。三九已至蒲肋,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間钝满,已是汗流浹背兜粘。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,528評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留弯蚜,地道東北人孔轴。 一個(gè)月前我還...
    沈念sama閱讀 48,983評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像碎捺,于是被迫代替她去往敵國(guó)和親路鹰。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,573評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容