Python 教程閱讀筆記(十) 標準庫一瞥(續)

2022-08-28 14:03:24 字數 1767 閱讀 3186

這篇主要涉及一些更高階的模組,這些模組支援那些專業的程式設計需求,因此在小指令碼中是很少出現。

reprlib模組提供了針對大型或深度內嵌容器的縮略顯示的repr()版本(不過說實話,我倒是沒看懂給的例子)

pprint模組提供了對內建及自定義物件以一種可被直譯器理解的方式進行列印的更複雜控制的能力。當結果長於一行時,這種「更漂亮的列印」會增加換行和縮進來更好的適配資料結構

textwrap模組格式化文字段落以適配螢幕寬度

locale模組可以訪問與文化相關資料格式的資料庫。locale的分組屬性提供了一種直接的方式以一組分割符來格式化數值

string模組有個template類可以簡化使用者的編輯。看看例子就明了了,對與$的轉義需使用$$

>>> from string import template

>>> t = template('$folk send $$10 to $cause.')

>>> t.substitute(village='nottingham', cause='the ditch fund')

'nottinghamfolk send $10 to the ditch fund.'

當使用substitute()方法時,當佔位符未提供時將會丟擲keyerror異常。可以使用safe_substitute()方法來部分輸出可替換項,對於未提供的佔位符保持不變直接輸出

模板子類可指定分隔符。

struct模組提供了pack()和unpack()函式來處理變長二進位制記錄格式,這裡舉的例子很有意思,是用unpack來解析zip檔案,這樣可想而知zipfile也許就是按照所有既定規則使用unpack來恢復資料的。

threading是用來對那些沒有順序依賴的任務進行解耦的技術。多執行緒應用的主要挑戰是需要協調執行緒共享資料和其他資源。執行緒模組提供了大量的同步原語,如鎖,事件,條件變數和訊號量。使用佇列物件來進行執行緒間通訊的程式是易設計,可讀性和可靠性也會較好。

logging模組提供了完整和靈活的日誌系統。最簡單的形式是,日誌資訊會被送到乙個檔案或sys.stderr

預設情況下,info()和debug()的資訊是不會顯示的,但是新的規則可以定義來選擇訊息優先順序是否顯示:debug,info,warning,error,critical

日誌系統可以直接從python上進行配置,也可以用使用者可編輯的配置檔案進行配置。

weakref模組提供了不建立引用就可以跟蹤物件的工具。當物件不再需要時,將自動從weakref表中刪除,**函式將被觸發。

array模組提供array()物件,和列表類似,用來儲存同質的資料,並更緊湊的儲存。

>>> from array import array   

>>> a = array('h', [4000, 10, 700, 22222])   每個元素只用2byte,而不是list中的16位元組

collections模組提供了deque()物件,來更快的追加和從左邊彈出元素,但是如果從中間查詢會更慢

bisect模組提供了函式操作排序列表

heapq模組提供了函式來實現基於普通列表的堆。最低值通常儲存在位置0,這對那些頻繁取用最小元素而不需要進行完整的列表排序的應用是很有用的。

decimal模組提供了decimal資料型別來進行浮點運算。與內建的二進位制浮點實現。有以下好處:

1.金融應用和其它需要精確十進位制表達的場合

2.控制精度

3.控制捨入以適應法律或者規定的要求

4.跟蹤精度位置

5.那些使用者希望結果和計算的匹配可以手動調整的場合

decimal類能夠進行精確的模運算,而二進位制浮點運算不行

Python 教程閱讀筆記(七) 錯誤和異常

有兩種錯誤 語法錯誤和異常 在執行時發現的錯誤稱為異常,並不是無條件致命的 處理異常 try clause1 except reason clause2 else clause 3 首先在try和except之間的語句執行,如果沒有異常發生,except語句被略過。如果發生異常,剩下的語句將跳過。如...

閱讀筆記 TypeScript菜鳥教程

1.概述 型別註解 介面和類 2.基礎型別 let arr any 1,a true let arr number 1,2 let arr array 1,2 let x string,number x point 122 列舉enum enum color let c color color.bl...

OC閱讀筆記十 匿名物件

協議可以在某種程度上提供匿名型別,當介面背後有多個不同的實現類,又不想宣告指定哪個類時,可以使用這種方法.因為有時候這些類會變,有時候又無法容納於標準的類繼承體系中,不能以某個公共基類來統一標示.在一些情況下,物件的型別並不重要,重要的是物件有沒有實現某些方法,可以用 匿名型別 來表達該概念.在開發...