Python本身內置的巨大標準庫提供了豐富的工具和功能,可以滿足你能想到的任何需求。很多Python的初學者習慣于自己寫代碼實現一些基本的功能,然后會驚奇地發現很多功能已經內置了,直接就可以使用。
任何時候想要自己寫函數處理一些簡單的工作時,請**停下來**先看看標準庫。我的建議是至少大概瀏覽一遍標準庫,這樣下次再需要一個函數時就能知道是否可以利用標準庫中已有的函數了。
后續章節會討論其中的一些模塊,如**functools**和**itertools**,下面是一些必須了解的標準庫模塊。
- **atexit**允許注冊在程序退出時調用的函數。
- **argparse**提供解析命令行參數的函數。
- **bisect**為可排序列表提供二分查找算法(參見10.3節)。
- **calendar**提供一組與日期相關的函數。
- **codecs**提供編解碼數據的函數。
- **collections**提供一組有用的數據結構。
- **copy**提供復制數據的函數。
- **csv**提供用于讀寫CSV文件的函數。
- **datetime**提供用于處理日期和時間的類。
- **fnmatch**提供用于匹配Unix風格文件名模式的函數。
- **concurrent**提供異步計算(在Python 3中內置,在Python 2中可通過PyPI安裝)。
- **glob**提供用于匹配Unix風格路徑模式的函數。
- **io**提供用于處理I/O流的函數。在Python 3中,它還包含**StringIO**(在Python 2中有同名的模塊),可以像處理文件一樣處理字符串。
- **json**提供用來讀寫JSON格式數據的函數。
- **logging**提供對Python內置的日志功能的訪問。
- **multiprocessing**可以在應用程序中運行多個子進程,而且提供API讓這些子進程看上去像線程一樣。
- **operator**提供實現基本的Python運算符功能的函數,可以使用這些函數而不是自己寫lambda表達式(參見8.3節)。
- **os**提供對基本的操作系統函數的訪問。
- **random**提供生成偽隨機數的函數。
- **re**提供正則表達式功能。
- **sched**提供一個無需多線程的事件調度器。
- **select**提供對函數*select()*和*poll()*的訪問,用于創建事件循環。
- **shutil**提供對高級文件處理函數的訪問。
- **signal**提供用于處理POSIX信號的函數。
- **tempfile**提供用于創建臨時文件和目錄的函數。
- **threading**提供對處理高級線程功能的訪問。
- **urllib**(以及Python 2.x中的**urllib2**和**urlparse**)提供處理和解析URL的函數。
- **uuid**可以生成全局唯一標識符(Universally Unique Identifiers,UUID)。
這個模塊清單可以作為一個快速參考,幫助你了解各個庫模塊的作用。如果能記住一部分就更好了。花在查找標準庫上的時間越少,意味著編寫實際代碼的時間就越多。
> 提示
> 大多數標準庫都是用Python寫的,所以可以直接查看其模塊和函數的源代碼。有疑問時只需打開代碼自己一探究竟。盡管文檔中已經包含了你想知道的一切,但總還是有機會讓你學一些有用的東西。
- 內容提要
- 中文版序
- 前言
- 第1章 項目開始
- 1.1 Python版本
- 1.2 項目布局
- 1.3 版本編號
- 1.4 編碼風格與自動檢查
- 1.5 Joshua Harlow訪談
- 第2章 模塊和庫
- 2.1 導入系統
- 2.2 標準庫
- 2.3 外部庫
- 2.4 框架
- 2.5 Doug Hellmann訪談
- 第3章 管理API變化
- Christophe de Vienne訪談
- 第4章 時區陷阱
- 第5章 文檔
- 5.1 Sphinx和reST入門
- 5.2 Sphinx模塊
- 5.3 擴展Sphinx
- 第6章 分發
- 6.1 簡史
- 6.2 使用pbr打包
- 6.3 Wheel格式
- 6.4 包的安裝
- 6.5 和世界分享你的成果
- 6.6 Nick Coghlan訪談
- 6.7 入口點
- 6.7.1 可視化的入口點
- 6.7.2 使用控制臺腳本
- 6.7.3 使用插件和驅動程序
- 第7章 虛擬環境
- 第8章 單元測試
- 8.1 基礎知識
- 8.2 fixture
- 8.3 模擬(mocking)
- 8.4 場景測試
- 8.5 測試序列與并行
- 8.6 測試覆蓋
- 8.7 使用虛擬環境和tox
- 8.8 測試策略
- 8.9 Robert Collins訪談
- 第9章 方法和裝飾器
- 9.1 創建裝飾器
- 9.2 Python中方法的運行機制
- 9.3 靜態方法
- 9.4 類方法
- 9.5 抽象方法
- 9.6 混合使用靜態方法、類方法和抽象方法
- 9.7 關于super的真相
- 第10章 函數式編程
- 10.1 生成器
- 10.2 列表推導
- 10.3 函數式函數的函數化
- 第11章 抽象語法樹
- 11.1 用抽象語法樹檢查來擴展flake8
- 11.2 Hy
- 11.3 Paul Tagliamonte訪談
- 第12章 性能與優化
- 12.1 數據結構
- 12.2 性能分析
- 12.3 有序列表和二分查找
- 12.4 namedtuple和slots
- 12.5 memoization
- 12.6 PyPy
- 12.7 通過緩沖區協議實現零復制
- 12.8 Victor Stinner訪談
- 第13章 擴展與架構
- 13.1 多線程的注意事項
- 13.2 多進程與多線程
- 13.3 異步和事件驅動架構
- 13.4 面向服務架構
- 第14章 RDBMS和ORM
- 14.1 用Flask和PostgreSQL流化數據
- 14.2 Dimitri Fontaine訪談
- 第15章 Python 3支持策略
- 15.1 語言和標準庫
- 15.2 外部庫
- 15.3 使用six
- 第16章 少即是多
- 16.1 單分發器
- 16.2 上下文管理器
- 第17章 延伸閱讀
- 版權信息
- 版權聲明
- 歡迎來到異步社區!
- 異步社區的來歷
- 社區里都有什么?
- 購買圖書
- 下載資源
- 與作譯者互動
- 靈活優惠的購書
- 紙電圖書組合購買
- 社區里還可以做什么?
- 提交勘誤
- 寫作
- 會議活動早知道
- 加入異步