編寫更簡潔的Python代碼的5個技巧

2020-08-28 聞數起舞

提高Python的可讀性

> Photo by Samantha Gades on Unsplash


許多人剛開始學習編程時會選擇Python。 Python確實是初學者友好的。 當您按照其官方網站上的下載和安裝說明進行操作時,很快就可以編寫&34;程序。

當您了解更多關於Python的知識時,您可能會著迷於它使用不同方法實現相同功能的靈活性。 但是,遲早您會發現某些解決方案比其他解決方案更簡潔。 更重要的是,從長遠來看,更簡潔的代碼往往更易於閱讀和維護。

當然,有很多方法可以用Python編寫簡潔的代碼。 在本文中,我想分享五個技巧,這些技巧在日常Python項目中特別有用。 為了說明為什麼這些技巧可以提供更簡潔的解決方案,在每個部分中,為了比較目的,我都會提供替代的,通常更長的解決方案。

1.列表,字典和集合理解

列表理解是許多Python程式設計師最喜歡的功能之一。 這是從迭代器創建列表對象的非常簡潔的方法。 基本語法為[可迭代的x表達式]。 讓我們看一些示例以了解其用法。

如您所見,在不使用列表推導的情況下,我們必須創建一個空列表,並通過運行for循環來添加每個數字的平方,這需要三行代碼。 相比之下,我們只使用一行代碼就可以通過列表理解來構建相同的正方形列表。 那不是很酷嗎?

除了列表理解之外,還有字典和集合理解。 字典理解具有以下基本語法{key_expr:用於iterable中的x的value_expr},而對於集合理解,其基本語法是{用於x中的iterable的表達式}。 讓我們在下面看一些簡單的例子。 與列表理解示例類似,將花費多行代碼來構建所需的字典並進行設置,而無需使用理解技術。

2.將元組命名為數據結構

我們知道元組對於存儲一些相關數據很有用。 但是,使用它們並不是很方便,尤其是在訪問特定元素方面,因為我們必須記住順序並使用特定元素的正確索引。

儘管如果不想使用元組,我們可以建立一個自定義類來管理相關數據,但是namedtuple數據類型可以是非常有用的輕量級數據結構。 通過集合模塊可用,namedtuple數據類型採用以下基本語法:namedtuple(Typename,field_names)。 語法雖然不太簡單,但實際上從概念上很容易理解。

讓我們看一些相關的例子。 理想的功能是創建一個數據結構,該結構可以存儲學生的信息,包括姓名,性別和學生ID號碼。

如您所知,使用namedtuple,我們可以使用更簡潔的代碼編寫輕量級的數據結構。 當然,應該注意,自定義類為您提供了可以操縱的更多功能。 但是,如果您的目的只是創建用於數據存儲和檢索目的的數據結構,則絕對可以考慮使用namedtuple。

3.使用enumerate()和zip()進行迭代

編碼的一項重要原則是DRY,它代表&34;。 當我們處理一系列數據(例如數字列表)時,這是一項常見的任務,我們需要對列表中的每個數字執行相同的操作。 為了避免重複相同的代碼,我們可以使用for循環來運行整個列表的迭代。

當我們迭代列表或任何序列時,有時我們還需要知道項目在序列中的位置。 有兩種方法可以做到這一點。 讓我們看看它們是什麼。

如您所見,通過使用內置函數enumerate(),我們可以輕鬆地訪問序列中的索引和元素,這比第一次迭代更簡潔。 更重要的是,它可以設置一個起始數字進行計數。 在上面的示例中,我們將其設置為1。

除了enumerate()函數外,zip()函數在迭代中也很有用。 此函數能夠從多個可迭代對象創建元組,而無需顯式創建這些可迭代對象的複合可迭代對象。 聽起來有些混亂,但是我們可以在下面的示例中看到它的用法。

基本上,zip()函數的作用是在每次迭代中從可迭代對象中獲取每個元素,以依次形成一個元組。 該代碼比冗長的代碼更簡潔,可讀性更好,不是嗎?

4.使用f字符串格式化字符串

字符串是一種基本的數據類型,我們幾乎在任何地方都使用它們。 字符串的一項基本應用是將它們以某種格式使用。 有幾種格式化字符串的方法,為此,我想介紹一下f字符串。

簡而言之,f字符串是內插的字符串文字,使用字母f(或F)作為字符串文字的前綴。 為了編寫簡潔的代碼,我將僅向您展示兩個首選f字符串的用例。

· 顯示變量。 最基本的用法是顯示一些變量的值,以便在開發過程中進行調試。 如果使用傳統的format()方法,則需要更長的時間。

· 連接變量/連接字符串。 f字符串不是直接使用+符號和字符串的join()方法,而是用於字符串串聯的非常簡單的方法,並且具有最佳的可讀性。 實際用途包括構造文件路徑,如下例所示。

5. Lambda函數

Lambda函數是Python中的匿名函數,通常在需要小的操作的地方使用。 Lambda函數可以採用一個或多個參數,並且具有單個表達式,並且具有以下語法Lambda參數:expression。

我將僅使用內置的sorted()函數來演示lambda函數的用法。 具體來說,sorted()函數使用key參數指定的key函數對可迭代對象進行排序。 我將向您展示,我們可以將lambda函數用作鍵參數,而不是使用def關鍵字聲明常規函數。

結論

在本文中,我們回顧了五個有用的技巧,使我們可以編寫更簡潔的Python代碼。 通過減少代碼編寫,實際上提高了可讀性和可維護性-幾乎總是如此。

但是,請記住,簡潔的代碼不應導致任何歧義或混亂。 您必須在簡潔和可讀性之間找到良好的平衡。 如果它們發生衝突,即使有時需要更多代碼,我們也應首先尊重可讀性。

謝謝閱讀。

(本文翻譯自Yong Cui, Ph.D.的文章《5 Tricks to Write More Concise Python Code》,參考:https://medium.com/better-programming/5-tricks-to-write-more-concise-python-code-f075f66336b6)

相關焦點

  • 如何編寫簡潔美觀的Python代碼
    這就是為什麼選擇正確的名稱和遵循正確的命名約定可以在編寫程序時可以產生巨大的不同。話雖如此,讓我們看看如何在Python中命名對象!開頭命名這些技巧可以應用於命名任何實體,並且應該嚴格遵守。# 在操作符之前斷行gdp = (consumption + government_spending + investment + net_exports )使用空行將代碼行聚在一起只會使讀者更難理解你的代碼。使代碼看起來更整潔、更美觀的一個好方法是在代碼中引入相應數量的空行。
  • 11個技巧讓你編寫出更好的Python代碼
    前言在本教程中,我們將展示11個技巧來編寫更好的Python代碼!我們展示了許多最佳實踐,它們通過使代碼更加簡潔和更具python風格來改進代碼。以下是所有技巧的概述:1)使用enumerate()而不是range(len())進行迭代2)使用列表comprehension代替原始的for循環3)使用內置的Sort()方法對複雜的迭代進行排序4)用集合存儲唯一的值5)使用generators節省內存6)用.get()和.setdefault()在字典中定義默認值
  • Python編寫代碼的規範要求
    打開APP Python編寫代碼的規範要求 碼農阿勇 發表於 2020-01-16 17:44:00 遵循好的規範可以不僅提高我們代碼的可讀性,還可以提高程序開發效率。新手和高手之間的差別主要也體現在規範上,這裡勇哥主要給大家分享python的PEP8規範,希望大家在編寫代碼的時候按照規範要求去編寫。
  • 掌握這10個python技巧,讓你代碼工作如魚得水!
    福布斯最新發布的一篇報告指出,python的使用量在去年增長了456%。Netfix、IBM以及其它數以百計的公司都在使用python。包括Dropbox也是由python創建的。Dice的研究表明,python是世界上最熱門的技巧之一,根據程式語言的流行度指數來看,python同時也是最受歡迎的程式語言。Python為何有如此大的魅力呢?
  • 高效率的開源工具:在python操作簡潔的sql代碼
    更多網際網路新鮮資訊、工作奇淫技巧關注原創【飛魚在浪嶼】(日更新)SQL語句是代碼,可以編寫,對其進行版本控制,對其進行注釋並使用文件保存運行它。如果在Python程序中以字符串形式編寫SQL代碼不會使你輕鬆在資料庫GUI工具或CLI工具(如psql)中重用SQL語句。
  • 數據科學家需要簡潔的Python代碼
    最近,我寫了一篇關於為什麼數據科學家的代碼傾向於遭受平庸之苦的評論文章,在這篇文章中,我希望介紹一些方法供新手數據科學家編寫更清晰的Python代碼並更好地構建小型項目,以及闡明減少技術債務在不經意間給你和所在團隊帶來的負作用。下面的內容既不詳盡也不足夠嚴謹,旨在以淺顯的方式介紹深層次建立數據科學項目的方式。有些要點很明顯,有些則有點隱晦。
  • 編寫高質量Python代碼的90個有效方法(第二版)
    新特性:在其他地方都找不到的Python的最佳實踐、模式、快捷方式和「pythonic」習慣用法包括Python算法、對象、並發、協作、內置模塊等等為什麼你對Python的習語和習語有更深層次的理解有效Python的第二版將幫助您掌握真正的「Python」編程方法,利用Python的全部功能編寫異常健壯和性能良好的代碼。使用簡潔、腳本驅動的Scott Meyers最暢銷的C++風格,Brett Slatkin匯集了90個Python最佳實踐、技巧和快捷方式,並用真實的代碼示例來解釋它們,這樣您就可以放心地接受Python。
  • 編寫更嵌入式軟體代碼的10個技巧
    以下技巧絕不會構成一個完整列表,但是它們解決了一些常見問題,這些問題可能會使您的應用程式維護者有理由詛咒您的名字,並且不要忘記您可能是其中之一!提示1:避免使用彙編代碼當然,在低端PIC上您別無選擇,而在高端ARM上您可能不需要它,但是在這兩種極端之間,有很多平臺使用彙編代碼來實現以下目的:提高性能並減少代碼大小。
  • 關於如何編寫 Clean Code 的 6 個簡單技巧
    編寫簡潔代碼(Clean Code)不是一件非常容易的事情,為了保持代碼整潔,你需要嘗試不同的技巧和做法。問題是,在這個問題上,有太多的做法和技巧,是需要大量的重構的。因此,開發者很難選擇出適合自己項目的做法和技巧。
  • 在Rust 代碼中編寫 Python 是種怎樣的體驗?
    預覽如果不熟悉inline-python類庫,你可以執行以下操作:fn main() {let who = "world";let n = 5; python!(甚至在Rust中編寫Python庫,但這是另一個主題。)它的Python::run 功能完全符合我們的需求。它將Python代碼作為&str,並允許我們使用兩個可選的PyDicts 來定義範圍內的任何變量。
  • 常用的10個Python編程小技巧
    主要介紹常用的10個Python實用小技巧,幫助大家更好的理解和學習Python,感興趣的朋友可以了解下~對編程感興趣,對Python感興趣,可以關注我噢·~私信發送「獲取」,更可以免費獲得Python編程學習資料~都說追女孩方法大於態度,學Python也是,今天就給大家分享的是我在用
  • @Python 開發者,如何更加高效地編寫代碼?
    對於 Python 開發者而言,Anaconda 能省下大量時間下載和安裝模塊包、處理項目環境等問題,幫助開發者更加愉快地編寫代碼。如果你苦於給 Python 安裝各種包,安裝過程中還各種出錯。那麼我牆裂推薦——Anaconda,它可以幫助你管理這些包,包括安裝、卸載、更新。
  • 掌握這些概念將助你編寫更好、更簡潔的代碼
    圖源:unsplash學習一種語言或框架的核心概念,從而高效編寫代碼,這是個不錯的想法。因此,解構是一個工具概念,可以讓代碼更純淨。2.Spread語法將spread運算符用於可迭代對象(如數組和字符串),它有助於將可迭代對象擴展為單個元素。擴展運算符的語法為三個點( ... )。例如,假設一個函數需要三個參數,而我們有一個包含三個元素的數組。
  • 7招教你編寫更簡短有效的java代碼
    是的,您可以按照以下七個技巧來編寫簡短的Java代碼。其中一些可能會讓您感到驚訝,但請相信我,它們是行之有效的做法-至少在我看來。1.使用IntelliJ IDEA作為您的IDE我已經使用Eclipse六年了,使用NetBeans三年了。
  • 如何用python自帶的IDE編寫你的第一行代碼
    1.啟動python自帶的IDLEWindow系統:點擊「開始」菜單-〉「所有程序」-〉「python 3.X」-》「IDEL」(Python GUI)即可啟動IDLE。其他作業系統的用戶,安裝python後也能找到對應的idle程序,啟動後彈出類似的畫面。
  • 這些Python代碼技巧,你肯定還不知道
    本文或許能夠讓你學到一些新技巧。Python 是世界上最流行、熱門的程式語言之一,原因很多,比如:易於學習超高的通用性具備大量模塊和庫本文將分享一些使用 Python 的技巧,順序按照 A-Z 排列。inspect 模塊:https://docs.python.org/3/library/inspect.html下面的代碼示例使用 inspect.getsource() 列印自己的原始碼。它還使用 inspect.getmodule() 列印定義它的模塊。最後一行代碼列印出自己的行號。
  • Python拾珍:用這些功能寫出更簡潔、更可讀或更高效的代碼
    Python提供了不少並不是完全必需的功能(不用它們也能寫出好代碼),但有時候,使用這些功能可以寫出更簡潔、更可讀或者更高效的代碼,甚至有時候三者兼得。如果創建一個由列表組成的字典,使用defaultdict往往能夠幫你寫出更簡潔的代碼
  • 編寫乾淨的C#代碼技巧
    介紹在當今時代,編寫代碼並不困難。然而,編寫乾淨且可伸縮的代碼並不容易。在本文中,我們將討論一些為我們的項目編寫乾淨C#代碼的技巧。乍一看,任何以前從未見過您的代碼的開發人員都必須儘可能地理解它,它幫助我們更好地理解代碼。下面是編寫乾淨C#代碼的一些重要技巧。
  • 提高可讀性,3 個讓代碼更簡潔的小技巧
    在完成代碼重構之後,我總是會獲得一種莫名的成就感。其實,不僅是大規模的代碼重構能給我帶來這種感覺,一些小的修改也能讓我感到很高興。以下3個簡單的重構技巧就能幫你改善代碼的可讀性。
  • 如何編寫和運行Python程序
    如何編寫Python程序?對於要如何編寫Python程序,其實說難也不難。但是,它特別重視行首的縮進,而且空格鍵和tab鍵還不能混用,必須保持一致,稍不注意就給你報個錯 「 TabError: Inconsistent use of tabs and spaces in indentation 」(別到時候彈出個這樣的錯誤提示還看不懂哦[靈光一閃][靈光一閃][靈光一閃])寫Python