溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Python的8個(gè)語(yǔ)法分別是什么

發(fā)布時(shí)間:2021-12-04 10:21:26 來(lái)源:億速云 閱讀:141 作者:柒染 欄目:網(wǎng)絡(luò)管理

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)。

Python的8個(gè)語(yǔ)法分別是什么

在 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á)式不支持多行代碼。但是可以模擬出多行代碼的效果。

Python的8個(gè)語(yǔ)法分別是什么

雖然看起來(lái)很奇怪,但是上面的函數(shù)可以使用下面的 lambda 表達(dá)式函數(shù)代替:

Python的8個(gè)語(yǔ)法分別是什么

始終記著,永遠(yuǎn)別在生產(chǎn)環(huán)境寫(xiě)這樣的代碼 :)不然會(huì)被打死。

2、替換方法字節(jié)碼

Python 阻止替換類(lèi)實(shí)例中的方法,因?yàn)?python 給類(lèi)實(shí)例中的方法賦予了只讀屬性:

Python的8個(gè)語(yǔ)法分別是什么

但是可以在字節(jié)碼的層面上進(jìn)行替換:

Python的8個(gè)語(yǔ)法分別是什么

注意! 這不僅對(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ì)受到影響:

Python的8個(gè)語(yǔ)法分別是什么

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í)變量中:

Python的8個(gè)語(yǔ)法分別是什么

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ù)列

把中間值保存在列表中

Python的8個(gè)語(yǔ)法分別是什么

把中間值保存到字典中:

Python的8個(gè)語(yǔ)法分別是什么

通過(guò) reduce 函數(shù)和 lambda 表達(dá)式:

Python的8個(gè)語(yǔ)法分別是什么

速度最快的變體:

Python的8個(gè)語(yǔ)法分別是什么

6、使用列表推導(dǎo)式產(chǎn)生死循環(huán)

[a.append(b) for a in [[None]] for b in a]

7、列表切片技巧

復(fù)制列表:

Python的8個(gè)語(yǔ)法分別是什么

移除/替換 列表中的任意元素:

Python的8個(gè)語(yǔ)法分別是什么

在列表的開(kāi)頭添加元素:

Python的8個(gè)語(yǔ)法分別是什么

在列表的尾部添加元素:

Python的8個(gè)語(yǔ)法分別是什么

反轉(zhuǎn)列表:

Python的8個(gè)語(yǔ)法分別是什么

8、讓可變?cè)刈鳛楹瘮?shù)參數(shù)默認(rèn)值

把可變對(duì)象作為函數(shù)參數(shù)的默認(rèn)值是非常危險(xiǎn)的一件事,并且在面試中有大量關(guān)于這方面棘手的面試問(wèn)題。但這一點(diǎn)對(duì)于緩存機(jī)制非常有幫助。

1. 階乘函數(shù):

Python的8個(gè)語(yǔ)法分別是什么

2.斐波拉契數(shù)列:

Python的8個(gè)語(yǔ)法分別是什么

總結(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í)。

向AI問(wèn)一下細(xì)節(jié)

免責(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)容。

AI