一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

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

服務器之家 - 腳本之家 - Python - 刷新認知!這六種讓 Python 程序變慢的壞習慣我一直在用!

刷新認知!這六種讓 Python 程序變慢的壞習慣我一直在用!

2022-02-18 00:39Python學習與數據挖掘喜歡就關注呀 Python

我們知道 Python 是一門非常流行的開發語言,它語言簡潔并且容易學習,一個功能可能有多種實現方式。只要有多種方法做一件特定的事情,那就意味著每種方法都性能的差異。

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

1.不要導入根模塊

在使用 Python 時,我們無法避免的一件事是導入模塊,無論是內置模塊還是第三方模塊。有時,我們可能只需要該模塊中的一個或幾個函數或對象。在這種情況下,我們應該嘗試只導入我們需要的函數或對象,而不是導入根模塊。

這是一個簡單的例子。假設我們需要計算程序中某些數字的平方根。

較慢的示例

刷新認知!這六種讓 Python 程序變慢的壞習慣我一直在用!

在不好的例子中,我們導入了 math 模塊,并使用 math.sqrt() 來訪問該函數。當然,它沒有任何問題,但如果我們可以導入 sqrt() 函數,性能會更好。

更快的例子

刷新認知!這六種讓 Python 程序變慢的壞習慣我一直在用!刷新認知!這六種讓 Python 程序變慢的壞習慣我一直在用!

2.避免使用點/點鏈

使用 dot 非常直觀。在 Python 中訪問對象的屬性或函數。大多數時候,沒有問題。但是,如果我們可以避免使用點甚至鏈接點,性能實際上會更好。

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

較慢的示例

刷新認知!這六種讓 Python 程序變慢的壞習慣我一直在用!刷新認知!這六種讓 Python 程序變慢的壞習慣我一直在用!

更快的例子

刷新認知!這六種讓 Python 程序變慢的壞習慣我一直在用!刷新認知!這六種讓 Python 程序變慢的壞習慣我一直在用!

如果你不相信這實際上做同樣的事情,我們可以驗證它。

刷新認知!這六種讓 Python 程序變慢的壞習慣我一直在用!

我可以預料到許多 Python 開發人員會跳出來說這個例子中的技術有點荒謬。事實上,即使是我自己,我也很少像上面那樣寫代碼。然而,很高興知道我們可以這樣編程,甚至可以讓它更快。

如果我們想附加到一個列表并從中刪除數百萬次的項目,我們可能應該考慮使用這個技巧。這就是為什么我們需要平衡代碼的性能和可讀性。

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

字符串在 Python 中是不可變的。因此,當我們使用"+"將多個字符串連接成一個長字符串時,每個子字符串都是單獨操作的。

較慢的示例

刷新認知!這六種讓 Python 程序變慢的壞習慣我一直在用!

具體來說,對于每個子字符串,它需要請求一個內存地址,然后將它與該內存地址中的原始字符串連接起來,這成為一種開銷。

更快的例子

刷新認知!這六種讓 Python 程序變慢的壞習慣我一直在用!

但是,當我們使用 join() 函數時,該函數事先知道所有子字符串,并且內存地址分配的長度適合最終連接的字符串。因此,沒有為每個子串分配內存的開銷。

強烈建議盡可能使用 join() 函數。但是,有時我們可能只想連接兩個字符串。或者,只是為了方便起見,我們想使用“+”。在這些情況下,使用“+”號會帶來更好的可讀性和更少的代碼長度。

4.不要使用臨時變量進行價值交換

許多算法需要兩個變量的值交換。在大多數其他編程語言中,這通常是通過引入一個臨時變量來完成的,如下所示。

較慢的示例

刷新認知!這六種讓 Python 程序變慢的壞習慣我一直在用!

更快的例子

但是,在 Python 中,我們不必使用 temp 變量。Python 具有內置語法來實現此值交換,如下所示。

刷新認知!這六種讓 Python 程序變慢的壞習慣我一直在用!

5.使用 If-Condition 短路

"短路"評估存在于許多編程語言中,Python 也是如此。基本上,它指的是某些布爾運算符的行為,其中僅當第一個參數不足以確定整個表達式的值時才執行或評估第二個參數。

讓我們在一個例子中演示這一點。假設我們有一個列表如下。

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

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

較慢的示例

有兩個條件都需要同時滿足:

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

刷新認知!這六種讓 Python 程序變慢的壞習慣我一直在用!

更快的例子

前面例子中的代碼沒有任何問題。但是,在這個特殊的虛構示例中,只有"Chris"的年齡在 30 歲以上。

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

但是,因為短路評估,如果我們先寫年齡條件,只有 Chris 的年齡在30歲以上,并且會再次檢查他的名字是否以"C"開頭。

刷新認知!這六種讓 Python 程序變慢的壞習慣我一直在用!

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

6.如果可以使用For循環就不要使用While循環

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

因此,當我們可以在 Python 中使用 For-Loop 時,我們不應該使用 while 循環。這不僅是因為 For-Loop 在 Python 中更優雅,而且性能更好。

較慢的示例

刷新認知!這六種讓 Python 程序變慢的壞習慣我一直在用!

更快的例子

刷新認知!這六種讓 Python 程序變慢的壞習慣我一直在用!

原文地址: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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 成年私人影院免费视频网站 | 美女机机对机机的视频(免费) | aⅴ天堂小视频 | 99热这里有精品 | 桃色综合网 | 天堂成人在线 | 国产一区二区三区久久精品小说 | 美女胸又大又黄又www小说 | 22sihu国产精品视频影视资讯 | 久久99精品国产免费观看 | 成人影院在线看 | 日本精品一二三区 | 第一次破女视频国产一级 | 办公室的秘密在线观看 | 国内交换一区二区三区 | 毛片手机在线视频免费观看 | 国产精品一区久久精品 | 欧美日韩高清不卡一区二区三区 | 国产理论片在线观看 | 欧美一区二区三区综合色视频 | 四虎精品影视 | www.俺去啦| av排名| 国产免费丝袜调教视频 | 日本一道本中文字幕 | 国产亚洲精aa在线观看香蕉 | 激情图片 激情小说 | 91av爱爱| 99精品在免费线视频 | 国产成人成人一区二区 | 日本一区二区三区在线 视频 | 99这里都是精品 | 免费观看无人区完整版 | 亚洲偷窥图区色 | 嘉嘉的丝袜美腿白丝 | 好姑娘在线观看完整版免费 | 91热国内精品永久免费观看 | 无码毛片内射白浆视频 | 午夜福利在线观看6080 | 国产亚洲女人久久久久久 | 2019国产精品|