您好,登錄后才能下訂單哦!
Python的8個(gè)語(yǔ)法分別是什么,針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。
那作為通用編程語(yǔ)言,Python為何更勝一籌?
近年來(lái),Python 更是橫掃了各大語(yǔ)言排行榜。在世界腳本語(yǔ)言排行榜中,Python 強(qiáng)勢(shì)登頂;在 TIOBE 編程語(yǔ)言排行榜中,Python 地位也在逐月攀升,越來(lái)越受廣大開(kāi)發(fā)者的歡迎。對(duì)比長(zhǎng)盛不衰的 Java、C、C++,后起之秀 Python 深受好評(píng)。
在 TIOBE 編程語(yǔ)言排行榜中,Python 也緊隨 Java、C、之后,在開(kāi)發(fā)者最喜愛(ài)的編程語(yǔ)言中位居第三名。
同樣作為通用編程語(yǔ)言,不可避免要分出個(gè)一二三四來(lái)。那么 Java、C、C++ 以及 Python 比起來(lái),誰(shuí)能獨(dú)領(lǐng)風(fēng)騷?誰(shuí)又略輸一籌?
雖然目前來(lái)講,Java 語(yǔ)言仍然傲視群雄,但是通過(guò)以上的對(duì)比可以發(fā)現(xiàn),即使與 Java、C、C++ 這三個(gè)老牌語(yǔ)言相比,Python 也顯得游刃有余,甚至隱隱有后來(lái)居上的意味。
所以,進(jìn)入2018年之后,Python幾乎成為編程語(yǔ)言界的"網(wǎng)紅",無(wú)論是使用人數(shù)還是受歡迎程度,都在各項(xiàng)榜單中飆升。5月,Python在PYPL指數(shù)榜中的超越Java,首次奪冠。
如果把PYPL編程語(yǔ)言人氣指數(shù)的時(shí)間軸拉長(zhǎng),Python在近十幾年的時(shí)間里,幾乎一直都是"牛市"。
我們都知道Python容易入門(mén)且用途廣泛,同時(shí)我們也可以用Python做一些意想不到的事情……這篇文章的目的在于幫助小伙伴們?nèi)媪私釶ython,僅此而已……
下面,我就來(lái)介紹下鮮為人知的一些Python語(yǔ)法:(這些代碼玩玩就好,不要在線上寫(xiě)這樣的代碼,切記,切記.)
1、使用 lambda 表達(dá)式重寫(xiě)多行函數(shù)
眾所周知 python 的 lambda 表達(dá)式不支持多行代碼。但是可以模擬出多行代碼的效果。
雖然看起來(lái)很奇怪,但是上面的函數(shù)可以使用下面的 lambda 表達(dá)式函數(shù)代替:
始終記著,永遠(yuǎn)別在生產(chǎn)環(huán)境寫(xiě)這樣的代碼 :)不然會(huì)被打死。
2、替換方法字節(jié)碼
Python 阻止替換類(lèi)實(shí)例中的方法,因?yàn)?python 給類(lèi)實(shí)例中的方法賦予了只讀屬性:
但是可以在字節(jié)碼的層面上進(jìn)行替換:
注意! 這不僅對(duì)當(dāng)前的實(shí)例有影響,而且對(duì)整個(gè)類(lèi)都有影響(準(zhǔn)確的說(shuō)是與這個(gè)類(lèi)綁定的函數(shù))(譯者注:此處應(yīng)該是筆誤,推測(cè)作者原意是:準(zhǔn)確的說(shuō)是與這個(gè)函數(shù)綁定的所有類(lèi)),并且所有其他的實(shí)例也會(huì)受到影響:
3、三元運(yùn)算符
現(xiàn)代的 python 提供了更簡(jiǎn)便的語(yǔ)法:
b if a else c
也可以通過(guò)下面的方式重寫(xiě):
(a and [b] or [c])[0](b, c)[not a]
順便說(shuō)一下,下面的變體是錯(cuò)誤的:
a and b or cTrue and [] or [1] -> [1], but: [] if True else [1] -> []
4、通過(guò)列表推導(dǎo)式移除重復(fù)的元素.
讓我們來(lái)把字符串 x = 'tteesstt' 轉(zhuǎn)換成 'test' 吧。
1、在原字符串中和上一個(gè)字符比較:
''.join(['' if i and j == x[i-1] else j for i,j in enumerate(x)])
2、把前一個(gè)字符保存到臨時(shí)變量中:
3、在新字符串中和上一個(gè)字符比較:
[(not r.endswith(i) and [r for r in [r+i]], r)[-1] for r in [''] for i in x][-1]
4、通過(guò) reduce 函數(shù)和 lambda 表達(dá)式:
reduce(lambda a, b: a if a.endswith(b) else a + b, x)
5、通過(guò)列表推導(dǎo)式獲得斐波拉契數(shù)列
把中間值保存在列表中
把中間值保存到字典中:
通過(guò) reduce 函數(shù)和 lambda 表達(dá)式:
速度最快的變體:
6、使用列表推導(dǎo)式產(chǎn)生死循環(huán)
[a.append(b) for a in [[None]] for b in a]
7、列表切片技巧
復(fù)制列表:
移除/替換 列表中的任意元素:
在列表的開(kāi)頭添加元素:
在列表的尾部添加元素:
反轉(zhuǎn)列表:
8、讓可變?cè)刈鳛楹瘮?shù)參數(shù)默認(rèn)值
把可變對(duì)象作為函數(shù)參數(shù)的默認(rèn)值是非常危險(xiǎn)的一件事,并且在面試中有大量關(guān)于這方面棘手的面試問(wèn)題。但這一點(diǎn)對(duì)于緩存機(jī)制非常有幫助。
1. 階乘函數(shù):
2.斐波拉契數(shù)列:
總結(jié):
Python由于語(yǔ)法簡(jiǎn)潔,功能強(qiáng)大,且在人工智能、大數(shù)據(jù)方面展現(xiàn)出效率優(yōu)勢(shì),越來(lái)越受到歡迎。
Python把其他語(yǔ)言做了一個(gè)封裝,調(diào)用其他語(yǔ)言做的包。很多的數(shù)據(jù)科學(xué)家其實(shí)是不希望學(xué)習(xí)過(guò)于復(fù)雜的編程語(yǔ)言的。把他們關(guān)于數(shù)據(jù)方面處理的智慧封裝起來(lái),通過(guò)Python來(lái)調(diào)用,這樣會(huì)方便很多。這也是為什么Python這幾年這么流行的原因。
關(guān)于Python的8個(gè)語(yǔ)法分別是什么問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識(shí)。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。