国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語(yǔ)言編程技術(shù)及教程分享平臺(tái)!
分類導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - Python - 刷新認(rèn)知!這六種讓 Python 程序變慢的壞習(xí)慣我一直在用!

刷新認(rèn)知!這六種讓 Python 程序變慢的壞習(xí)慣我一直在用!

2022-02-18 00:39Python學(xué)習(xí)與數(shù)據(jù)挖掘喜歡就關(guān)注呀 Python

我們知道 Python 是一門非常流行的開發(fā)語(yǔ)言,它語(yǔ)言簡(jiǎn)潔并且容易學(xué)習(xí),一個(gè)功能可能有多種實(shí)現(xiàn)方式。只要有多種方法做一件特定的事情,那就意味著每種方法都性能的差異。

在本文中,我總結(jié)了 6 種 Python 編寫方式案例。

1.不要導(dǎo)入根模塊

在使用 Python 時(shí),我們無(wú)法避免的一件事是導(dǎo)入模塊,無(wú)論是內(nèi)置模塊還是第三方模塊。有時(shí),我們可能只需要該模塊中的一個(gè)或幾個(gè)函數(shù)或?qū)ο蟆T谶@種情況下,我們應(yīng)該嘗試只導(dǎo)入我們需要的函數(shù)或?qū)ο螅皇菍?dǎo)入根模塊。

這是一個(gè)簡(jiǎn)單的例子。假設(shè)我們需要計(jì)算程序中某些數(shù)字的平方根。

較慢的示例

刷新認(rèn)知!這六種讓 Python 程序變慢的壞習(xí)慣我一直在用!

在不好的例子中,我們導(dǎo)入了 math 模塊,并使用 math.sqrt() 來(lái)訪問(wèn)該函數(shù)。當(dāng)然,它沒(méi)有任何問(wèn)題,但如果我們可以導(dǎo)入 sqrt() 函數(shù),性能會(huì)更好。

更快的例子

刷新認(rèn)知!這六種讓 Python 程序變慢的壞習(xí)慣我一直在用!刷新認(rèn)知!這六種讓 Python 程序變慢的壞習(xí)慣我一直在用!

2.避免使用點(diǎn)/點(diǎn)鏈

使用 dot 非常直觀。在 Python 中訪問(wèn)對(duì)象的屬性或函數(shù)。大多數(shù)時(shí)候,沒(méi)有問(wèn)題。但是,如果我們可以避免使用點(diǎn)甚至鏈接點(diǎn),性能實(shí)際上會(huì)更好。

下面的示例顯示將數(shù)字附加到列表中,然后將其刪除。

較慢的示例

刷新認(rèn)知!這六種讓 Python 程序變慢的壞習(xí)慣我一直在用!刷新認(rèn)知!這六種讓 Python 程序變慢的壞習(xí)慣我一直在用!

更快的例子

刷新認(rèn)知!這六種讓 Python 程序變慢的壞習(xí)慣我一直在用!刷新認(rèn)知!這六種讓 Python 程序變慢的壞習(xí)慣我一直在用!

如果你不相信這實(shí)際上做同樣的事情,我們可以驗(yàn)證它。

刷新認(rèn)知!這六種讓 Python 程序變慢的壞習(xí)慣我一直在用!

我可以預(yù)料到許多 Python 開發(fā)人員會(huì)跳出來(lái)說(shuō)這個(gè)例子中的技術(shù)有點(diǎn)荒謬。事實(shí)上,即使是我自己,我也很少像上面那樣寫代碼。然而,很高興知道我們可以這樣編程,甚至可以讓它更快。

如果我們想附加到一個(gè)列表并從中刪除數(shù)百萬(wàn)次的項(xiàng)目,我們可能應(yīng)該考慮使用這個(gè)技巧。這就是為什么我們需要平衡代碼的性能和可讀性。

3.不要使用 + 連接字符串

字符串在 Python 中是不可變的。因此,當(dāng)我們使用"+"將多個(gè)字符串連接成一個(gè)長(zhǎng)字符串時(shí),每個(gè)子字符串都是單獨(dú)操作的。

較慢的示例

刷新認(rèn)知!這六種讓 Python 程序變慢的壞習(xí)慣我一直在用!

具體來(lái)說(shuō),對(duì)于每個(gè)子字符串,它需要請(qǐng)求一個(gè)內(nèi)存地址,然后將它與該內(nèi)存地址中的原始字符串連接起來(lái),這成為一種開銷。

更快的例子

刷新認(rèn)知!這六種讓 Python 程序變慢的壞習(xí)慣我一直在用!

但是,當(dāng)我們使用 join() 函數(shù)時(shí),該函數(shù)事先知道所有子字符串,并且內(nèi)存地址分配的長(zhǎng)度適合最終連接的字符串。因此,沒(méi)有為每個(gè)子串分配內(nèi)存的開銷。

強(qiáng)烈建議盡可能使用 join() 函數(shù)。但是,有時(shí)我們可能只想連接兩個(gè)字符串。或者,只是為了方便起見(jiàn),我們想使用“+”。在這些情況下,使用“+”號(hào)會(huì)帶來(lái)更好的可讀性和更少的代碼長(zhǎng)度。

4.不要使用臨時(shí)變量進(jìn)行價(jià)值交換

許多算法需要兩個(gè)變量的值交換。在大多數(shù)其他編程語(yǔ)言中,這通常是通過(guò)引入一個(gè)臨時(shí)變量來(lái)完成的,如下所示。

較慢的示例

刷新認(rèn)知!這六種讓 Python 程序變慢的壞習(xí)慣我一直在用!

更快的例子

但是,在 Python 中,我們不必使用 temp 變量。Python 具有內(nèi)置語(yǔ)法來(lái)實(shí)現(xiàn)此值交換,如下所示。

刷新認(rèn)知!這六種讓 Python 程序變慢的壞習(xí)慣我一直在用!

5.使用 If-Condition 短路

"短路"評(píng)估存在于許多編程語(yǔ)言中,Python 也是如此。基本上,它指的是某些布爾運(yùn)算符的行為,其中僅當(dāng)?shù)谝粋€(gè)參數(shù)不足以確定整個(gè)表達(dá)式的值時(shí)才執(zhí)行或評(píng)估第二個(gè)參數(shù)。

讓我們?cè)谝粋€(gè)例子中演示這一點(diǎn)。假設(shè)我們有一個(gè)列表如下。

my_dict = [
    { 'name': 'Alice', 'age': 28 },
    { 'name': 'Bob', 'age': 23 },
    { 'name': 'Chris', 'age': 33 },
    { 'name': 'Chelsea', 'age': 2 },
    { 'name': 'Carol', 'age': 24 }
]

我們的工作是對(duì)列表進(jìn)行過(guò)濾,找出所有名字以"C"開頭,年齡大于等于30歲的人。

較慢的示例

有兩個(gè)條件都需要同時(shí)滿足:

  • 名稱以"C"開頭
  • 年齡≥30 因此,我們可以編寫如下代碼。

刷新認(rèn)知!這六種讓 Python 程序變慢的壞習(xí)慣我一直在用!

更快的例子

前面例子中的代碼沒(méi)有任何問(wèn)題。但是,在這個(gè)特殊的虛構(gòu)示例中,只有"Chris"的年齡在 30 歲以上。

如果我們先寫出檢查名字的條件,那么滿足三個(gè)名字(Chris、Chelsea 和 Carol)。然后,將針對(duì)所有這 3 個(gè)人再次檢查有關(guān)年齡的第二個(gè)條件。

但是,因?yàn)槎搪吩u(píng)估,如果我們先寫年齡條件,只有 Chris 的年齡在30歲以上,并且會(huì)再次檢查他的名字是否以"C"開頭。

刷新認(rèn)知!這六種讓 Python 程序變慢的壞習(xí)慣我一直在用!

在這種情況下,它幾乎快了100%。

6.如果可以使用For循環(huán)就不要使用While循環(huán)

Python 使用了很多 C 來(lái)提高性能,即 CPython。在循環(huán)語(yǔ)句方面,Python 中的 For-Loop 具有相對(duì)較少的步驟,其中更多的步驟作為 C 代碼運(yùn)行,而不是 While-Loop。

因此,當(dāng)我們可以在 Python 中使用 For-Loop 時(shí),我們不應(yīng)該使用 while 循環(huán)。這不僅是因?yàn)?For-Loop 在 Python 中更優(yōu)雅,而且性能更好。

較慢的示例

刷新認(rèn)知!這六種讓 Python 程序變慢的壞習(xí)慣我一直在用!

更快的例子

刷新認(rèn)知!這六種讓 Python 程序變慢的壞習(xí)慣我一直在用!

原文地址:https://mp.weixin.qq.com/s?__biz=MzAxNTAwNjQzNw==&mid=2448615322&idx=3&sn=3b8592505b9b12b329cc22e17ca0af97&chksm=8f8ce810b8fb6106b6d9878ab85ac24112d4cd1acfdbfdd8ec25f1ac537b0d32fee84316cae0&mpshare=1&scene=23&srcid=0216aqsjoc5X1ayozhTs5kX9&sharer_sharetime=1644987566328&sharer_shareid=3f3e151334b58a8d0b13ce00c0e3123e#rd

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: h视频免费观看 | 日韩视频一区二区三区 | 激情在线视频 | 国产精品国产三级国产aⅴ原创 | 午夜寂寞影视在线观看 | 久久99精品久久久久久久青青日本 | 亚洲国产精品视频一区二区三区 | 久久久99精品免费观看 | 日韩欧美一区二区三区免费观看 | 午夜小视频在线 | 中文字幕在线免费观看 | 99精品一区二区三区 | 91在线综合 | 88tv成人| 亚洲精品久久久久久久久久久久久 | 中文字幕免费视频 | 亚洲精品电影在线观看 | 国产精品成人3p一区二区三区 | 中文字幕在线一区 | 日韩午夜av | 91久久国产露脸精品国产护士 | 国产一区二区影院 | 欧美一区二区在线视频 | 午夜免费福利视频 | 欧美一区二区三区电影 | 国产麻豆一区二区三区四区 | 999这里只有是极品 最新中文字幕在线 | 精品自拍视频 | 国产99在线 | 亚洲 | 日本成人黄色网址 | 操av在线 | 国产精品一区久久久 | 国产综合区| 精品一区二区久久久久久久网站 | 国产精品a久久久久 | 日韩中文字幕在线观看 | 精品久久久久久久中文字幕 | 久久久免费网站 | 久久久久久夜精品精品免费 | 免费一级毛片 | 韩日一区二区三区 |