1
組織字元串輸入
在程式設計過程中,整理使用者輸入的問題非常普遍。通常,将字元轉換為小寫或大寫就足夠了,有時您可以使用正規表達式子產品"Regex"執行此操作。但是,如果問題很複雜,可能有更好的方法來解決它:
在此示例中,您可以看到空格字元"n"和"t"已替換為單個空格,并且"r"已被删除。
這隻是一個非常簡單的例子,我們可以更進一步,使用"unicodedata"包生成一個大型的重映射表,并使用其中的"combining()進行生成和映射"。
2
疊代器切片
如果對疊代器進行切片,則傳回"TypeError",訓示生成器對象未下标,但我們可以通過一個簡單的方案來解決此問題:
我們可以使用"itertools.islice"來建立一個"islice"對象,該對象是生成所需項的疊代器。
注: 此操作将使用切片之前的所有生成器項,以及"islice"對象中的所有項。
3
跳過疊代對象的開頭
有時,您必須處理以不需要的行(如注釋)開頭的檔案。再一次,"itertools"提供了一個簡單的解決方案:
此代碼僅在初始注釋部分之後列印。如果我們隻想丢棄疊代對象的開頭(本示例中開頭的注釋行),而不知道它将持續多長時間,這将非常有用。
4
僅包含關鍵字參數的函數 (kwargs)
當我們使用以下函數時,建立隻需要關鍵字參數作為輸入的函數以提供更清晰的函數定義是有幫助的:
如您所見,在關鍵字參數之前添加""可以解決問題。如果我們在""參數之前放置一些參數,它們顯然是位置參數。
5
建立支援"with"語句的對象
例如,我們都知道如何使用"with"語句打開檔案或擷取鎖,但是我們可以實作自己的上下文表達式嗎?是的,我們可以使用"進入"和"退出"來實作上下文管理協定:
這是在Python中實作上下文管理的最常見方法,但有更簡單的方法:
上面的代碼使用上下文管理器的管理器修飾器實作内容管理協定。當輸入 with 塊時,執行 tag 函數的第一部分(在收益之前),然後執行 with 塊,執行 tag 函數的其餘部分。
6
使用"插槽"節省記憶體
如果您曾經編寫過一個建立大量類執行個體的程式,您可能已經注意到您的程式突然需要大量記憶體。
這是因為Python使用字典來表示類執行個體的屬性,這使得它速度很快,但在記憶體使用方面效率不高。通常,這不是一個嚴重的問題。但是,如果您的程式受到此嚴重影響,請嘗試"插槽":
當我們定義"slots"屬性時,Python沒有使用字典來表示該屬性,而是使用了一個小的固定大小的數組,這大大減少了每個執行個體所需的記憶體。
使用插槽有一些缺點:我們不能聲明任何新屬性,我們隻能使用插槽上的現有屬性。此外,具有"槽"的類不能使用多重繼承。
7
限制"CPU"和記憶體使用
如果你不想優化程式的記憶體或CPU使用,而是想直接将其限制在一定數量,Python也有相應的庫可以做:
如我們所見,在上面的代碼片段中,包括設定最大CPU運作時間和最大記憶體使用限制的選項。
在限制 cpu 的運作時時,我們首先擷取該特定資源的軟限制和硬限制(RLIMIT_CPU),然後使用參數指定的秒數和先前檢索到的硬限制來設定它們。
最後,如果 CPU 運作超出限制,我們将發出系統退出信号。在記憶體使用方面,我們再次檢索軟限制和硬限制,并使用帶有"size"參數的"setrlimit"參數和先前檢索到的硬限制進行設定。
8
控制可以/不能導入的内容
有些語言具有非常明顯的導出成員的機制(變量、方法、接口)。
例如,在 Golang 中,僅導出以大寫字母開頭的成員。
但是,在Python中,所有成員都被導出(除非我們使用"all"):
在上面的代碼中,我們知道隻有"bar"函數被導出。同樣,我們可以将"all"留白,以便不導出任何内容,進而在從此子產品導入時導緻"AttributeError"。
9
實作比較運算符的簡單方法
為類實作所有比較運算符(如 lt、le、gt、ge)很麻煩。有沒有更簡單的方法來做到這一點?在這樣的時候,"functools.total_ordering"是一個很好的幫手:
這是如何工作的?
我們使用"total_ordering"裝飾器來簡化類執行個體的排序過程。我們需要做的就是定義"lt"和"eq",它們是實作其餘操作所需的最小操作集(這是裝飾器所做的 - 為我們填寫空白)。
10
結語
本文中提到的并非所有功能在日常Python程式設計中都是必要或有用的,但是其中一些功能可能會不時派上用場,并且它們可能會簡化已經冗長且令人讨厭的任務。
同樣重要的是要注意,所有這些功能都是Python标準庫的一部分。在我看來,其中一些功能似乎不像标準庫中包含的标準内容,是以當你用Python實作本文中提到的一些功能時,請先參考Python的标準庫,如果你找不到你想要的功能,那可能隻是因為你沒有嘗試找到它(如果你不這樣做, 它确實存在于一些第三方庫中)。
推薦:
<h1級"pgc-h-arrow-right"資料軌道"123">"中國風動畫""江子牙"刷屏後面,隐藏在中國動畫100年幕布中</h1>
<h1級"pgc-h-右箭頭資料軌道"124">"中國風動畫"除了"哪個",這些良心國産動畫也應該讓更多人知道!</h1>
<H1級"pgc-h-right-arrow"資料軌道"125">"中國風動畫""霧山五線"大火,但很少有人知道其前身"老城玻璃心"中一個拿着十米刀的男人死了!</h1>
陳述
來源:51CTO,AI産業鍊聯盟推薦閱讀,不代表AI産業鍊聯盟立場,轉載請注明,如涉及版權問題,請聯系我們删除或做相關處理!