python 各模塊

来源:http://www.cnblogs.com/Maker-Liu/archive/2016/05/25/5528146.html
-Advertisement-
Play Games

01 關於本書 02 代碼約定 03 關於例子 04 如何聯繫我們 1 核心模塊 11 介紹 111 內建函數和異常 112 操作系統介面模塊 113 類型支持模塊 114 正則表達式 115 語言支持模塊 12 _ _builtin_ _ 模塊 121 使用元組或字典中的參數調用函數 1211 E ...


  1. 01 關於本書
  2. 02 代碼約定
  3. 03 關於例子
  4. 04 如何聯繫我們
  5. 1 核心模塊
    1. 11 介紹
      1. 111 內建函數和異常
      2. 112 操作系統介面模塊
      3. 113 類型支持模塊
      4. 114 正則表達式
      5. 115 語言支持模塊
    2. 12 _ _builtin_ _ 模塊
      1. 121 使用元組或字典中的參數調用函數
        1. 1211 Example 1-1 使用 apply 函數
        2. 1212 Example 1-2 使用 apply 函數傳遞關鍵字參數
        3. 1213 Example 1-3 使用 apply 函數調用基類的構造函數
      2. 122 載入和重載模塊
        1. 1221 Example 1-4 使用 _ _import_ _ 函數載入模塊
        2. 1222 Example 1-5 Plug-in 例子
        3. 1223 Example 1-6 使用 _ _import_ _ 函數獲得特定函數
        4. 1224 Example 1-7 使用 _ _import_ _ 函數實現 延遲導入
        5. 1225 Example 1-8 使用 reload 函數
      3. 123 關於名稱空間
        1. 1231 Example 1-9 使用 dir 函數
        2. 1232 Example 1-10 使用 dir 函數查找類的所有成員
        3. 1233 Example 1-11 使用 vars 函數
      4. 124 檢查對象類型
        1. 1241 Example 1-12 使用 type 函數
        2. 1242 Example 1-13 對文件名和文件對象使用 type 函數
        3. 1243 Example 1-14 使用 callable 函數
        4. 1244 Example 1-15 使用 isinstance 函數
        5. 1245 Example 1-16 使用 issubclass 函數
      5. 125 計算 Python 表達式
        1. 1251 Example 1-17 使用 eval 函數
        2. 1252 Example 1-18 使用 eval 函數執行任意命令
        3. 1253 Example 1-19 安全地使用 eval 函數求值
      6. 126 編譯和執行代碼
        1. 1261 Example 1-20 使用 compile 函數檢查語法
        2. 1262 Example 1-21 執行已編譯的代碼
        3. 1263 Example 1-22 簡單的代碼生成工具
        4. 1264 Example 1-23 使用 execfile 函數
        5. 1265 Example 1-24 hellopy 腳本
      7. 127 從 _ _builtin_ _ 模塊重載函數
        1. 1271 Example 1-25 顯式地訪問 _ _builtin_ _ 模塊中的函數
      8. 13 exceptions 模塊
        1. 1301 Example 1-26 使用 exceptions 模塊
      9. 14 os 模塊
        1. 141 處理文件
          1. 1411 Example 1-27 使用 os 模塊重命名和刪除文件
        2. 142 處理目錄
          1. 1421 Example 1-28 使用 os 列出目錄下的文件
          2. 1422 Example 1-29 使用 os 模塊改變當前工作目錄
          3. 1423 Example 1-30 使用 os 模塊創建刪除多個目錄級
          4. 1424 Example 1-31 使用 os 模塊創建刪除目錄
        3. 143 處理文件屬性
          1. 1431 Example 1-32 使用 os 模塊獲取文件屬性
          2. 1432 Example 1-33 使用 os 模塊修改文件的許可權和時間戳
        4. 144 處理進程
          1. 1441 Example 1-34 使用 os 執行操作系統命令
          2. 1442 Example 1-35 使用 os 模塊啟動新進程
          3. 1443 Example 1-36 使用 os 模塊調用其他程式 Unix
          4. 1444 Example 1-37 使用 os 模塊調用其他程式 Windows
          5. 1445 Example 1-38 使用 os 模塊在後臺執行程式 Windows
          6. 1446 Example 1-39 使用 spawn 或 forkexec 調用其他程式
        5. 145 處理守護進程Daemon Processes
          1. 1451 Example 1-40 使用 os 模塊使腳本作為守護執行 Unix
          2. 1452 Example 1-41 使用 os 模塊終止當前進程
        6. 15 ospath 模塊
          1. 151 處理文件名
            1. 1511 Example 1-42 使用 ospath 模塊處理文件名
            2. 1512 Example 1-43 使用 ospath 模塊檢查文件名的特征
            3. 1513 Example 1-44 使用 ospath 模塊將用戶名插入到文件名
            4. 1514 Example 1-45 使用 ospath 替換文件名中的環境變數
          2. 152 搜索文件系統
            1. 1521 Example 1-46 使用 ospath 搜索文件系統
            2. 1522 Example 1-47 使用 oslistdir 搜索文件系統
            3. 1523 Example 1-48 使用 DirectoryWalker 搜索文件系統
            4. 1524 Example 1-49 使用 DirectoryStatWalker 搜索文件系統
          3. 16 stat 模塊
            1. 1601 Example 1-50 Using the stat Module
          4. 17 string 模塊
            1. 1701 Example 1-51 使用 string 模塊
            2. 1702 Example 1-52 使用字元串方法替代 string 模塊函數
            3. 1703 Example 1-53 使用 string 模塊將字元串轉為數字
          5. 18 re 模塊
            1. 1801 Example 1-54 使用 re 模塊來匹配字元串
            2. 1802 Example 1-55 使用 re 模塊抽出匹配的子字元串
            3. 1803 Example 1-56 使用 re 模塊搜索子字元串
            4. 1804 Example 1-57 使用 re 模塊替換子字元串
            5. 1805 Example 1-58 使用 re 模塊替換字元串通過回調函數
            6. 1806 Example 1-59 使用 re 模塊匹配多個模式中的一個
          6. 19 math 模塊
            1. 1901 Example 1-60 使用 math 模塊
          7. 110 cmath 模塊
            1. 11001 Example 1-61 使用 cmath 模塊
          8. 111 operator 模塊
            1. 11101 Example 1-62 使用 operator 模塊
            2. 11102 Example 1-63 使用 operator 模塊檢查類型
          9. 112 copy 模塊
            1. 11201 Example 1-64 使用 copy 模塊複製對象
            2. 11202 Example 1-65 使用 copy 模塊複製集合Collections
          10. 113 sys 模塊
            1. 1131 處理命令行參數
              1. 11311 Example 1-66 使用sys模塊獲得腳本的參數
            2. 1132 處理模塊
              1. 11321 Example 1-67 使用sys模塊操作模塊搜索路徑
              2. 11322 Example 1-68 使用sys模塊查找內建模塊
              3. 11323 Example 1-69 使用sys模塊查找已導入的模塊
            3. 1133 處理引用記數
              1. 11331 Example 1-70 使用sys模塊獲得引用記數
              2. 11332 Example 1-71 使用sys模塊獲得當前平臺
            4. 1134 跟蹤程式
              1. 11341 Example 1-72 使用sys模塊配置分析函數
              2. 11342 Example 1-73 使用sys模塊配置單步跟蹤函數
            5. 1135 處理標準輸出輸入
              1. 11351 Example 1-74 使用sys重定向輸出
            6. 1136 退出程式
              1. 11361 Example 1-75 使用sys模塊退出程式
              2. 11362 Example 1-76 捕獲sysexit調用
              3. 11363 Example 1-77 另一種捕獲sysexit調用的方法
            7. 114 atexit 模塊
              1. 11401 Example 1-78 使用 atexit 模塊
            8. 115 time 模塊
              1. 1151 獲得當前時間
                1. 11511 Example 1-79 使用 time 模塊獲取當前時間
              2. 1152 將時間值轉換為字元串
                1. 11521 Example 1-80 使用 time 模塊格式化時間輸出
              3. 1153 將字元串轉換為時間對象
                1. 11531 Example 1-81 使用 timestrptime 函數解析時間
                2. 11532 Example 1-82 strptime 實現
              4. 1154 轉換時間值
                1. 11541 Example 1-83 使用 time 模塊將本地時間元組轉換為時間值整數
                2. 11542 Example 1-84 將 UTC 時間元組轉換為時間值整數
              5. 1155 Timing 相關
                1. 11551 Example 1-85 使用 time 模塊評價演算法
              6. 116 types 模塊
                1. 11601 Example 1-86 使用 types 模塊
              7. 117 gc 模塊
                1. 11701 Example 1-87 使用 gc 模塊收集迴圈引用垃圾
  6. 2 更多標準模塊
    1. 21 概覽
      1. 211 文件與流
      2. 212 類型封裝
      3. 213 隨機數字
      4. 214 加密演算法
    2. 22 fileinput 模塊
      1. 2201 Example 2-1 使用 fileinput 模塊迴圈一個文本文件
      2. 2202 Example 2-2 使用 fileinput 模塊處理多個文本文件
      3. 2203 Example 2-3 使用 fileinput 模塊將 CRLF 改為 LF
    3. 23 shutil 模塊
      1. 2301 Example 2-4 使用 shutil 複製文件
      2. 2302 Example 2-5 使用 shutil 模塊複製刪除目錄樹
    4. 24 tempfile 模塊
      1. 2401 Example 2-6 使用 tempfile 模塊創建臨時文件
      2. 2402 Example 2-7 使用 tempfile 模塊打開臨時文件
    5. 25 StringIO 模塊
      1. 2501 Example 2-8 使用 StringIO 模塊從記憶體文件讀入內容
      2. 2502 Example 2-9 使用 StringIO 模塊向記憶體文件寫入內容
      3. 2503 Example 2-10 使用 StringIO 模塊捕獲輸出
    6. 26 cStringIO 模塊
      1. 2601 Example 2-11 使用 cStringIO 模塊
      2. 2602 Example 2-12 後退至 StringIO
    7. 27 mmap 模塊
      1. 2701 Example 2-13 使用 mmap 模塊
      2. 2702 Example 2-14 對映射區域使用字元串方法和正則表達式
    8. 28 UserDict 模塊
      1. 2801 Example 2-15 使用 UserDict 模塊
    9. 29 UserList 模塊
      1. 2901 Example 2-16 使用 UserList 模塊
    10. 210 UserString 模塊
      1. 21001 Example 2-17 使用 UserString 模塊
    11. 211 traceback 模塊
      1. 21101 Example 2-18 使用 traceback 模塊列印跟蹤返回信息
      2. 21102 Example 2-19 使用 traceback 模塊將跟蹤返回信息複製到字元串
      3. 21103 Example 2-20 使用 traceback Module 模塊編碼 Traceback 對象
    12. 212 errno 模塊
      1. 21201 Example 2-21 使用 errno 模塊
      2. 21202 Example 2-22 使用 errorcode 字典
    13. 213 getopt 模塊
      1. 21301 Example 2-23 使用 getopt 模塊
      2. 21302 Example 2-24 使用 getopt 模塊處理長選項
    14. 214 getpass 模塊
      1. 21401 Example 2-25 使用 getpass 模塊
    15. 215 glob 模塊
      1. 21501 Example 2-26 使用 glob 模塊
    16. 216 fnmatch 模塊
      1. 21601 Example 2-27 使用 fnmatch 模塊匹配文件
      2. 21602 Example 2-28 使用 fnmatch 模塊將模式轉換為正則表達式
    17. 217 random 模塊
      1. 21701 Example 2-29 使用 random 模塊獲得隨機數字
      2. 21702 Example 2-30 使用 random 模塊從序列取出隨機項
      3. 21703 Example 2-31 使用 random 模塊打亂一副牌
      4. 21704 Example 2-32 使用 random 模塊生成高斯分佈隨機數
    18. 218 whrandom 模塊
      1. 21801 Example 2-33 使用 whrandom 模塊
      2. 21802 Example 2-34 使用 whrandom 模塊創建多個隨機生成器
    19. 219 md5 模塊
      1. 21901 Example 2-35 使用 md5 模塊
      2. 21902 Example 2-36 使用 md5 模塊獲得十六進位或 base64 編碼的 md5 值
      3. 21903 Example 2-37 使用 md5 模塊來處理口令的發送與應答的驗證
      4. 21904 Example 2-38 使用 md5 模塊檢查數據完整性
    20. 220 sha 模塊
      1. 22001 Example 2-39 使用 sha 模塊
    21. 221 crypt 模塊
      1. 22101 Example 2-40 使用 crypt 模塊
      2. 22102 Example 2-41 使用 crypt 模塊身份驗證
    22. 222 rotor 模塊
      1. 22201 Example 2-42 使用 rotor 模塊
    23. 223 zlib 模塊
      1. 22301 Example 2-43 使用 zlib 模塊壓縮字元串
      2. 22302 Example 2-44 使用 zlib 模塊壓縮多個不同類型文件
      3. 22303 Example 2-45 使用 zlib 模塊解壓縮流
      4. 22304 Example 2-46 壓縮流的仿文件訪問方式
    24. 224 code 模塊
      1. 22401 Example 2-47 使用 code 模塊編譯語句
      2. 22402 Example 2-48 使用 code 模塊模擬交互解釋器
      3. 22403 Example 2-49 使用 code 模塊實現簡單的 Debugging
  7. 3 線程和進程
    1. 31 概覽
      1. 311 線程
      2. 312 進程
    2. 32 threading 模塊
      1. 3201 Example 3-1 使用 threading 模塊
    3. 33 Queue 模塊
      1. 3301 Example 3-2 使用 Queue 模塊
      2. 3302 Example 3-3 使用限制大小的 Queue 模塊
      3. 3303 Example 3-4 使用 Queue 模塊實現優先順序隊列
      4. 3304 Example 3-5 使用 Queue 模塊實現一個堆棧
    4. 34 thread 模塊
      1. 3401 Example 3-6 使用 thread 模塊
    5. 35 commands 模塊
      1. 3501 Example 3-7 使用 commands 模塊
    6. 36 pipes 模塊
      1. 3601 Example 3-8 使用 pipes 模塊
    7. 37 popen2 模塊
      1. 3701 Example 3-9 使用 popen2 模塊對字元串排序Module to Sort Strings
      2. 3702 Example 3-10 使用 popen2 模塊控制 gnuchess
    8. 38 signal 模塊
      1. 3801 Example 3-11 使用 signal 模塊
  8. 4 數據表示
    1. 41 概覽
      1. 411 二進位數據
      2. 412 自描述格式
      3. 413 輸出格式
      4. 414 編碼二進位數據
    2. 42 array 模塊
      1. 4201 Example 4-1 使用 array 模塊將數列轉換為字元串
      2. 4202 Example 4-2 作為普通序列操作陣列
      3. 4203 Example 4-3 使用陣列將字元串轉換為整數列表
      4. 4204 Example 4-4 使用 array 模塊判斷平臺位元組序
      5. 4205 Example 4-5 使用 sysbyteorder 屬性判斷平臺位元組序 Python 20 及以後
    3. 43 struct 模塊
      1. 4301 Example 4-6 使用 struct 模塊
    4. 44 xdrlib 模塊
      1. 4401 Example 4-7 使用 xdrlib 模塊
      2. 4402 Example 4-8 使用 xdrlib 模塊發送 RPC 調用包
    5. 45 marshal 模塊
      1. 4501 Example 4-9 使用 marshal 模塊組合不連續數據
      2. 4502 Example 4-10 使用 marshal 模塊處理代碼
    6. 46 pickle 模塊
      1. 4601 Example 4-11 使用 pickle 模塊
      2. 4602 Example 4-12 使用 pickle 模塊的二進位模式
    7. 47 cPickle 模塊
      1. 4701 Example 4-13 使用 cPickle 模塊
    8. 48 copy_reg 模塊
      1. 4801 Example 4-14 使用 copy_reg 模塊實現 code 對象的 pickle 操作
      2. 4802 Example 4-15 使用 copy_reg 模塊實現文件對象的 pickle 操作
    9. 49 pprint 模塊
      1. 4901 Example 4-16 使用 pprint 模塊
    10. 410 repr 模塊
      1. 41001 Example 4-17 使用 repr 模塊
    11. 411 base64 模塊
      1. 41101 Example 4-18 使用 base64 模塊編碼文件
      2. 41102 Example 4-19 使用 base64 模塊編碼字元串
      3. 41103 Example 4-20 使用 base64 模塊做基本驗證
      4. 41104 Example 4-21 使用 base64 為 Tkinter 封裝 GIF 格式
    12. 412 binhex 模塊
      1. 41201 Example 4-22 使用 binhex 模塊
    13. 413 quopri 模塊
      1. 41301 Example 4-23 使用 quopri 模塊
    14. 414 uu 模塊
      1. 41401 Example 4-24 使用 uu 模塊編碼二進位文件
      2. 41402 Example 4-25 使用 uu 模塊解碼 uu 格式的文件
    15. 415 binascii 模塊
      1. 41501 Example 4-26 使用 binascii 模塊
  9. 5 文件格式
    1. 51 概覽
      1. 511 Markup 語言
      2. 512 配置文件
      3. 513 壓縮檔案格式
    2. 52 xmllib 模塊
      1. 5201 Example 5-1 使用 xmllib 模塊獲取元素的信息
      2. 5202 Example 5-2 使用 xmllib 模塊
    3. 53 xmlparsersexpat 模塊
      1. 5301 Example 5-3 使用 xmlparsersexpat 模塊
      2. 5302 Example 5-4 使用 xmlparsersexpat 模塊讀取 ISO Latin-1 文本
    4. 54 sgmllib 模塊
      1. 5401 Example 5-5 使用 sgmllib 模塊提取 Title 元素
      2. 5402 Example 5-6 使用 sgmllib 模塊格式化 SGML 文檔
      3. 5403 Example 5-7 使用 sgmllib 模塊檢查格式
      4. 5404 Example 5-8 使用 sgmllib 模塊過濾 SGML 文檔
    5. 55 htmllib 模塊
      1. 5501 Example 5-9 使用 htmllib 模塊
    6. 56 htmlentitydefs 模塊
      1. 5601 Example 5-10 使用 htmlentitydefs 模塊
      2. 5602 Example 5-11 使用 htmlentitydefs 模塊翻譯實體
      3. 5603 Example 5-12 轉義 ISO Latin-1 實體
    7. 57 formatter 模塊
      1. 5701 Example 5-13 使用 formatter 模塊將 HTML 轉換為事件流
      2. 5702 Example 5-14 使用 formatter 模塊將 HTML 轉換為純文本
      3. 5703 Example 5-15 使用 formatter 模塊自定義 Writer
    8. 58 ConfigParser 模塊
      1. 5801 Example 5-16 使用 ConfigParser 模塊
      2. 5802 Example 5-17 使用 ConfigParser 模塊寫入配置數據
    9. 59 netrc 模塊
      1. 5901 Example 5-18 使用 netrc 模塊
    10. 510 shlex 模塊
      1. 51001 Example 5-19 使用 shlex 模塊
    11. 511 zipfile 模塊
      1. 5111 列出內容
        1. 51111 Example 5-20 使用 zipfile 模塊列出 ZIP 文檔中的文件
      2. 5112 從 ZIP 文件中讀取數據
        1. 51121 Example 5-21 使用 zipfile 模塊從 ZIP 文件中讀取數據
      3. 5113 向 ZIP 文件寫入數據
        1. 51131 Example 5-22 使用 zipfile 模塊將文件儲存在 ZIP 文件里
        2. 51132 Example 5-23 使用 zipfile 模塊在 ZIP 文件中儲存字元串
      4. 512 gzip 模塊
        1. 51201 Example 5-24 使用 gzip 模塊讀取壓縮文件
        2. 51202 Example 5-25 給 gzip 模塊添加 seektell 支持
  10. 6 郵件和新聞消息處理
    1. 61 概覽
    2. 62 rfc822 模塊
      1. 6201 Example 6-1 使用 rfc822 模塊
      2. 6202 Example 6-2 使用 rfc822 模塊解析標頭欄位
    3. 63 mimetools 模塊
      1. 6301 Example 6-3 使用 mimetools 模塊
    4. 64 MimeWriter 模塊
      1. 6401 Example 6-4 使用 MimeWriter 模塊
      2. 6402 Example 6-5 MimeWriter 模塊的輔助類
    5. 65 mailbox 模塊
      1. 6501 Example 6-6 使用 mailbox 模塊
    6. 66 mailcap 模塊
      1. 6601 Example 6-7 使用 mailcap 模塊獲得 Capability 字典
      2. 6602 Example 6-8 使用 mailcap 模塊獲得打開
    7. 67 mimetypes 模塊
      1. 6701 Example 6-9 使用 mimetypes 模塊
    8. 68 packmail 模塊
      1. 6801 Example 6-10 使用 packmail 打包單個文件
    9. 69 mimify 模塊
      1. 6901 Example 6-12 使用 mimify 模塊解碼信息
      2. 6902 Example 6-13 使用 mimify 模塊編碼信息
    10. 610 multifile 模塊
      1. 61001 Example 6-14 使用 multifile 模塊
  11. 7 網路協議
    1. 71 概覽
      1. 711 Internet 時間協議
      2. 712 HTTP 協議
    2. 72 socket 模塊
      1. 7201 Example 7-1 使用 socket 模塊實現一個時間客戶端
      2. 7202 Example 7-2 使用 socket 模塊實現一個時間伺服器
      3. 7203 Example 7-3 一個時間協議客戶端
      4. 7204 Example 7-4 使用 socket 模塊實現一個報文時間客戶端
    3. 73 select 模塊
      1. 7301 Example 7-6 使用 select 模塊等待經 socket 發送的數據
    4. 74 asyncore 模塊
      1. 7401 Example 7-7 使用 asyncore 模塊從時間伺服器獲得時間
      2. 7402 Example 7-8 使用 asyncore 模塊實現時間伺服器
      3. 7403 Example 7-9 使用 asyncore 模塊發送 HTTP 請求
      4. 7404 Example 7-10 使用 SimpleAsyncHTTP 類
      5. 7405 Example 7-11 使用 SimpleAsyncHTTP 類處理重定向
    5. 75 asynchat 模塊
      1. 7501 Example 7-12 使用 asynchat 模塊實現一個迷你 HTTP 伺服器
      2. 7502 Example 7-13 使用 asynchat 模塊實現一個簡單的 HTTP 伺服器
    6. 76 urllib 模塊
      1. 7601 Example 7-14 使用 urllib 模塊獲取遠程資源
      2. 7602 Example 7-15 用 urllib 模塊實現自動身份驗證
    7. 77 urlparse 模塊
      1. 7701 Example 7-16 使用 urlparse 模塊
      2. 7702 Example 7-17 使用 urlparse 模塊處理 HTTP 定位器 HTTP Locators
      3. 7703 Example 7-18 使用 urlparse 模塊處理 HTTP 定位器 HTTP Locators
      4. 7704 Example 7-19 使用 urlparse 模塊組合相對定位器
    8. 78 cookie 模塊
      1. 7801 Example 7-20 使用 cookie 模塊
    9. 79 robotparser 模塊
      1. 7901 Example 7-21 使用 robotparser 模塊
    10. 710 ftplib 模塊
      1. 71001 Example 7-22 使用 ftplib 模塊獲得目錄列表
      2. 71002 Example 7-23 使用 ftplib 模塊下載文件
      3. 71003 Example 7-24 使用 ftplib 模塊上傳文件
    11. 711 gopherlib 模塊
      1. 71101 Example 7-25 使用 gopherlib 模塊
    12. 712 httplib 模塊
      1. 71201 Example 7-26 使用 httplib 模塊
    13. 7121 將數據發送給伺服器
      1. 71211 Example 7-27 使用 httplib 發送數據
    14. 713 poplib 模塊
      1. 71301 Example 7-28 使用 poplib 模塊
    15. 714 imaplib 模塊
      1. 71401 Example 7-29 使用 imaplib 模塊
    16. 715 smtplib 模塊
      1. 71501 Example 7-30 使用 smtplib 模塊
    17. 716 telnetlib 模塊
      1. 71601 Example 7-31 使用 telnetlib 模塊登陸到遠程伺服器
    18. 717 nntplib 模塊
      1. 7171 列出消息
        1. 71711 Example 7-32 使用 nntplib 模塊列出消息
      2. 7172 下載消息
        1. 71721 Example 7-33 使用 nntplib 模塊下載消息
        2. 71722 Example 7-34 使用 nntplib 和 rfc822 模塊處理消息
      3. 718 SocketServer 模塊
        1. 71801 Example 7-35 使用 SocketServer 模塊
      4. 719 BaseHTTPServer 模塊
        1. 71901 Example 7-36 使用 BaseHTTPServer 模塊
      5. 720 SimpleHTTPServer 模塊
        1. 72001 Example 7-37 使用 SimpleHTTPServer 模塊
        2. 72002 Example 7-38 使用 SimpleHTTPServer 模塊實現代理
      6. 721 CGIHTTPServer 模塊
        1. 72101 Example 7-39 使用 CGIHTTPServer 模塊
      7. 722 cgi 模塊
        1. 72201 Example 7-40 使用 cgi 模塊
      8. 723 webbrowser 模塊
        1. 72301 Example 7-41 使用 webbrowser 模塊
  12. 8 國際化
    1. 81 locale 模塊
      1. 8101 Example 8-2 使用 locale 模塊獲得當前平臺 locale 設置
    2. 82 unicodedata 模塊
      1. 8201 Example 8-3 使用 unicodedata 模塊
    3. 83 ucnhash 模塊
      1. 8301 Example 8-4 使用 ucnhash 模塊
  13. 9 多媒體相關模塊
    1. 91 概覽
    2. 92 imghdr 模塊
      1. 9201 Example 9-1 使用 imghdr 模塊
    3. 93 sndhdr 模塊
      1. 9301 Example 9-2 使用 sndhdr 模塊
    4. 94 whatsound 模塊
      1. 9401 Example 9-3 使用 whatsound 模塊
    5. 95 aifc 模塊
      1. 9501 Example 9-4 使用 aifc 模塊
    6. 96 sunau 模塊
      1. 9601 Example 9-5 使用 sunau 模塊
    7. 97 sunaudio 模塊
      1. 9701 Example 9-6 使用 sunaudio 模塊
    8. 98 wave 模塊
      1. 9801 Example 9-7 使用 wave 模塊
    9. 99 audiodev 模塊
      1. 9901 Example 9-8 使用 audiodev 模塊
    10. 910 winsound 模塊
      1. 91001 Example 9-9 使用 winsound 模塊
  14. 10 數據儲存
    1. 101 概覽
    2. 102 anydbm 模塊
      1. 10201 Example 10-1 使用 anydbm 模塊
    3. 103 whichdb 模塊
      1. 10301 Example 10-2 使用 whichdb 模塊
    4. 104 shelve 模塊
      1. 10401 Example 10-3 使用 shelve 模塊
      2. 10402 Example 10-4 使用 shelve 模塊處理給定資料庫
    5. 105 dbhash 模塊
      1. 10501 Example 10-5 使用 dbhash 模塊
    6. 106 dbm 模塊
      1. 10601 Example 10-6 使用 dbm 模塊
    7. 107 dumbdbm 模塊
      1. 10701 Example 10-7 使用 dumbdbm 模塊
    8. 108 gdbm 模塊
      1. 10801 Example 10-8 使用 gdbm 模塊
  15. 11 工具和實用程式
    1. 111 dis 模塊
      1. 11101 Example 11-1 使用 dis 模塊
    2. 112 pdb 模塊
      1. 11201 Example 11-2 使用 pdb 模塊
    3. 113 bdb 模塊
      1. 11301 Example 11-3 使用 bdb 模塊
    4. 114 profile 模塊
      1. 11401 Example 11-4 U使用 profile 模塊
    5. 115 pstats 模塊
      1. 11501 Example 11-5 使用 pstats 模塊
    6. 116 tabnanny 模塊
      1. 11601 Example 11-6 使用 tabnanny 模塊
  16. 12 其他模塊
    1. 121 概覽
    2. 122 fcntl 模塊
      1. 12201 Example 12-1 Using the fcntl Module
    3. 123 pwd 模塊
      1. 12301 Example 12-2 使用 pwd 模塊
      2. 12302 Example 12-3 使用 pwd 模塊
    4. 124 grp 模塊
      1. 12401 Example 12-4 使用 grp 模塊
      2. 12402 Example 12-5 使用 grp 模塊緩存用戶組信息
    5. 125 nis 模塊
      1. 12501 Example 12-6 nis
    6. 126 curses 模塊
      1. 12601 Example 12-7 curses
    7. 127 termios 模塊
      1. 12701 Example 12-8 使用 termios 模塊
    8. 128 tty 模塊
      1. 12801 Example 12-9 使用 tty 模塊
    9. 129 resource 模塊
      1. 12901 Example 12-10 使用 resource 模塊查詢當前設置
      2. 12902 Example 12-11 使用 resource 模塊限制資源
    10. 1210 syslog 模塊
      1. 121001 Example 12-12 使用 syslog 模塊
    11. 1211 msvcrt 模塊
      1. 121101 Example 12-13 使用 msvcrt 模塊獲得按鍵值
      2. 121102 Example 12-14 使用 msvcrt 模塊接受鍵盤輸入
      3. 121103 Example 12-15 使用 msvcrt 模塊鎖定文件
    12. 1212 nt 模塊
      1. 121201 Example 12-16 使用 nt 模塊
    13. 1213 _winreg 模塊
      1. 121301 Example 12-17 使用 _winreg 模塊
    14. 1214 posix 模塊
      1. 121401 Example 12-18 使用 posix 模塊
  17. 13 執行支持模塊
    1. 131 dospath 模塊
      1. 13101 Example 13-1 使用 dospath 模塊
    2. 132 macpath 模塊
      1. 13201 Example 13-2 使用 macpath 模塊
    3. 133 ntpath 模塊
      1. 13301 Example 13-3 使用 ntpath 模塊
    4. 134 posixpath 模塊
      1. 13401 Example 13-4 使用 posixpath 模塊
    5. 135 strop 模塊
      1. 13501 Example 13-5 使用 strop 模塊
    6. 136 imp 模塊
      1. 13601 Example 13-6 使用 imp 模塊
    7. 137 new 模塊
      1. 13701 Example 13-7 使用 new 模塊
    8. 138 pre 模塊
      1. 13801 Example 13-8 使用 pre 模塊
    9. 139 sre 模塊
      1. 13901 Example 13-9 使用 sre 模塊
    10. 1310 py_compile 模塊
      1. 131001 Example 13-10 使用 py_compile 模塊
    11. 1311 compileall 模塊
      1. 131101 Example 13-11 使用 compileall 模塊編譯目錄中的所有腳本
    12. 1312 ihooks 模塊
      1. 131201 Example 13-12 使用 ihooks 模塊
    13. 1313 linecache 模塊
      1. 131301 Example 13-13 使用 linecache 模塊
    14. 1314 macurl2path 模塊
      1. 131401 Example 13-14 使用 macurl2path 模塊
    15. 1315 nturl2path 模塊
      1. 131501 Example 13-15 使用 nturl2path 模塊
      2. 131502 Example 13-16 通過 urllib 調用 nturl2path 模塊
    16. 1316 tokenize 模塊
      1. 131601 Example 13-17 使用 tokenize 模塊
    17. 1317 keyword 模塊
      1. 131701 Example 13-18 使用 keyword 模塊
    18. 1318 parser 模塊
      1. 131801 Example 13-19 使用 parser 模塊
    19. 1319 symbol 模塊
      1. 131901 Example 13-20 使用 symbol 模塊
    20. 1320 token 模塊
      1. 132001 Example 13-21 使用 token 模塊
  18. 14 其他模塊
    1. 141 概覽
    2. 142 pyclbr 模塊
      1. 14201 Example 14-1 使用 pyclbr 模塊
      2. 14202 Example 14-2 使用 pyclbr 模塊讀取類和函數
      3. 14203 Example 14-3 使用 pyclbr 模塊
    3. 143 filecmp 模塊
      1. 14301 Example 14-4 使用 filecmp 模塊
    4. 144 cmd 模塊
      1. 14401 Example 14-5 使用 cmd 模塊
    5. 145 rexec 模塊
      1. 14501 Example 14-6 使用 rexec 模塊
    6. 146 Bastion 模塊
      1. 14601 Example 14-7 使用 Bastion 模塊
      2. 14602 Example 14-8 使用 Bastion 模塊處理非標準過濾器
    7. 147 readline 模塊
      1. 14701 Example 14-9 使用 readline 模塊
    8. 148 rlcompleter 模塊
      1. 14801 Example 14-10 使用 rlcompleter 模塊展開名字
    9. 149 statvfs 模塊
      1. 14901 Example 14-11 使用 statvfs 模塊
    10. 1410 calendar 模塊
      1. 141001 Example 14-12 使用 calendar 模塊
      2. 141002 Example 14-13 使用 calendar 模塊
    11. 1411 sched 模塊
      1. 141101 Example 14-14 使用 sched 模塊
    12. 1412 statcache 模塊
      1. 141201 Example 14-15 使用 statcache 模塊
    13. 1413 grep 模塊
      1. 141301 Example 14-16 使用 grep 模塊
    14. 1414 dircache 模塊
      1. 141401 Example 14-17 使用 dircache 模塊
    15. 1415 dircmp 模塊
      1. 141501 Example 14-18 使用 dircmp 模塊
    16. 1416 cmp 模塊
      1. 141601 Example 14-19 使用 cmp 模塊
    17. 1417 cmpcache 模塊
      1. 141701 Example 14-20 使用 cmpcache 模塊
    18. 1418 util 模塊
      1. 141801 Example 14-21 實現 util 模塊的 remove 函數
      2. 141802 Example 14-22 實現 util 模塊的 readfile 函數
      3. 141803 Example 14-23 實現 util 模塊的 readopenfile 函數
    19. 1419 soundex 模塊
      1. 141901 Example 14-24 使用 soundex 模塊
    20. 1420 timing 模塊
      1. 142001 Example 14-25 使用 timing 模塊
      2. 142002 Example 14-26 模擬 timing 模塊
    21. 1421 posixfile 模塊
      1. 142101 Example 14-27 使用 posixfile 模塊
    22. 1422 bisect 模塊
      1. 142201 Example 14-28 使用 bisect 模塊向列表插入條目
      2. 142202 Example 14-29 使用 bisect 模塊獲得插入點位置
    23. 1423 knee 模塊
      1. 142301 Example 14-30 使用 knee 模塊
    24. 1424 tzparse 模塊
      1. 142401 Example 14-31 使用 tzparse 模塊
    25. 1425 regex 模塊
      1. 142501 Example 14-32 使用 regex 模塊
    26. 1426 regsub 模塊
      1. 142601 Example 14-33 使用 regsub 模塊
    27. 1427 reconvert 模塊
      1. 142701 Example 14-34 使用 reconvert 模塊
    28. 1428 regex_syntax 模塊
      1. 142801 Example 14-35 使用 regex_syntax 模塊
    29. 1429 find 模塊
      1. 142901 Example 14-36 使用 find 模塊
  19. 15 Py 20 後新增模塊
  20. 16 後記
   
  • 0.1. 關於本書
  • 0.2. 代碼約定
  • 0.3. 關於例子
  • 0.4. 如何聯繫我們
  1. 核心模塊
    • 1.1. 介紹
    • 1.2. _ _builtin_ _ 模塊
    • 1.3. exceptions 模塊
    • 1.4. os 模塊
    • 1.5. os.path 模塊
    • 1.6. stat 模塊
    • 1.7. string 模塊
    • 1.8. re 模塊
    • 1.9. math 模塊
    • 1.10. cmath 模塊
    • 1.11. operator 模塊
    • 1.12. copy 模塊
    • 1.13. sys 模塊
    • 1.14. atexit 模塊
    • 1.15. time 模塊
    • 1.16. types 模塊
    • 1.17. gc 模塊
  2. 更多標準模塊
    • 2.1. 概覽
    • 2.2. fileinput 模塊
    • 2.3. shutil 模塊
    • 2.4. tempfile 模塊
    • 2.5. StringIO 模塊
    • 2.6. cStringIO 模塊
    • 2.7. mmap 模塊
    • 2.8. UserDict 模塊
    • 2.9. UserList 模塊
    • 2.10. UserString 模塊
    • 2.11. traceback 模塊
    • 2.12. errno 模塊
    • 2.13. getopt 模塊
    • 2.14. getpass 模塊
    • 2.15. glob 模塊
    • 2.16. fnmatch 模塊
    • 2.17. random 模塊
    • 2.18. whrandom 模塊
    • 2.19. md5 模塊
    • 2.20. sha 模塊
    • 2.21. crypt 模塊
    • 2.22. rotor 模塊
    • 2.23. zlib 模塊
    • 2.24. code 模塊
  3. 線程和進程
    • 3.1. 概覽
    • 3.2. threading 模塊
    • 3.3. Queue 模塊
    • 3.4. thread 模塊
    • 3.5. commands 模塊
    • 3.6. pipes 模塊
    • 3.7. popen2 模塊
    • 3.8. signal 模塊
  4. 數據表示
    • 4.1. 概覽
    • 4.2. array 模塊
    • 4.3. struct 模塊
    • 4.4. xdrlib 模塊
    • 4.5. marshal 模塊
    • 4.6. pickle 模塊
    • 4.7. cPickle 模塊
    • 4.8. copy_reg 模塊
    • 4.9. pprint 模塊
    • 4.10. repr 模塊
    • 4.11. base64 模塊
    • 4.12. binhex 模塊
    • 4.13. quopri 模塊
    • 4.14. uu 模塊
    • 4.15. binascii 模塊
  5. 文件格式
    • 5.1. 概覽
    • 5.2. xmllib 模塊
    • 5.3. xml.parsers.expat 模塊
    • 5.4. sgmllib 模塊
    • 5.5. htmllib 模塊
    • 5.6. htmlentitydefs 模塊
    • 5.7. formatter 模塊
    • 5.8. ConfigParser 模塊
    • 5.9. netrc 模塊
    • 5.10. shlex 模塊
    • 5.11. zipfile 模塊
    • 5.12. gzip 模塊
  6. 郵件和新聞消息處理
    • 6.1. 概覽
    • 6.2. rfc822 模塊
    • 6.3. mimetools 模塊
    • 6.4. MimeWriter 模塊
    • 6.5. mailbox 模塊
    • 6.6. mailcap 模塊
    • 6.7. mimetypes 模塊
    • 6.8. packmail 模塊
    • 6.9. mimify 模塊
    • 6.10. multifile 模塊
  7. 網路協議
    • 7.1. 概覽
    • 7.2. socket 模塊
    • 7.3. select 模塊
    • 7.4. asyncore 模塊
    • 7.5. asynchat 模塊
    • 7.6. urllib 模塊
    • 7.7. urlparse 模塊
    • 7.8. cookie 模塊
    • 7.9. robotparser 模塊
    • 7.10. ftplib 模塊
    • 7.11. gopherlib 模塊
    • 7.12. httplib 模塊
    • 7.13. poplib 模塊
    • 7.14. imaplib 模塊
    • 7.15. smtplib 模塊
    • 7.16. telnetlib 模塊
    • 7.17. nntplib 模塊
    • 7.18. SocketServer 模塊
    • 7.19. BaseHTTPServer 模塊
    • 7.20. SimpleHTTPServer 模塊
    • 7.21. CGIHTTPServer 模塊
    • 7.22. cgi 模塊
    • 7.23. webbrowser 模塊
  8. 國際化
    • 8.1. locale 模塊
    • 8.2. unicodedata 模塊
    • 8.3. ucnhash 模塊
  9. 多媒體相關模塊
    • 9.1. 概覽
    • 9.2. imghdr 模塊
    • 9.3. sndhdr 模塊
    • 9.4. whatsound 模塊
    • 9.5. aifc 模塊
    • 9.6. sunau 模塊
    • 9.7. sunaudio 模塊
    • 9.8. wave 模塊
    • 9.9. audiodev 模塊
    • 9.10. winsound 模塊
  10. 數據儲存
    • 10.1. 概覽
    • 10.2. anydbm 模塊
    • 10.3. whichdb 模塊
    • 10.4. shelve 模塊
    • 10.5. dbhash 模塊
    • 10.6. dbm 模塊
    • 10.7. dumbdbm 模塊
    • 10.8. gdbm 模塊
  11. 工具和實用程式
    • 11.1. dis 模塊
    • 11.2. pdb 模塊
    • 11.3. bdb 模塊
    • 11.4. profile 模塊
    • 11.5. pstats 模塊
    • 11.6. tabnanny 模塊
  12. 其他模塊
    • 12.1. 概覽
    • 12.2. fcntl 模塊
    • 12.3. pwd 模塊
    • 12.4. grp 模塊
    • 12.5. nis 模塊
    • 12.6. curses 模塊
    • 12.7. termios 模塊
    • 12.8. tty 模塊
    • 12.9. resource 模塊
    • 12.10. syslog 模塊
    • 12.11. msvcrt 模塊
    • 12.12. nt 模塊
    • 12.13. _winreg 模塊
    • 12.14. posix 模塊
  13. 執行支持模塊
    • 13.1. dospath 模塊
    • 13.2. macpath 模塊
    • 13.3. ntpath 模塊
    • 13.4. posixpath 模塊
    • 13.5. strop 模塊
    • 13.6. imp 模塊
    • 13.7. new 模塊
    • 13.8. pre 模塊
    • 13.9. sre 模塊
    • 13.10. py_compile 模塊
    • 13.11. compileall 模塊
    • 13.12. ihooks 模塊
    • 13.13. linecache 模塊
    • 13.14. macurl2path 模塊
    • 13.15. nturl2path 模塊
    • 13.16. tokenize 模塊
    • 13.17. keyword 模塊
    • 13.18. parser 模塊
    • 13.19. symbol 模塊
    • 13.20. token 模塊
  14. 其他模塊
    • 14.1. 概覽
    • 14.2. pyclbr 模塊
    • 14.3. filecmp 模塊
    • 14.4. cmd 模塊
    • 14.5. rexec 模塊
    • 14.6. Bastion 模塊
    • 14.7. readline 模塊
    • 14.8. rlcompleter 模塊
    • 14.9. statvfs 模塊
    • 14.10. calendar 模塊
    • 14.11. sched 模塊
    • 14.12. statcache 模塊
    • 14.13. grep 模塊
    • 14.14. dircache 模塊
    • 14.15. dircmp 模塊
    • 14.16. cmp 模塊
    • 14.17. cmpcache 模塊
    • 14.18. util 模塊
    • 14.19. soundex 模塊
    • 14.20. timing 模塊
    • 14.21. posixfile 模塊
    • 14.22. bisect 模塊
    • 14.23. knee 模塊
    • 14.24. tzparse 模塊
    • 14.25. regex 模塊
    • 14.26. regsub 模塊
    • 14.27. reconvert 模塊
    • 14.28. regex_syntax 模塊
    • 14.29. find 模塊
  15. Py 2.0 後新增模塊
  16. 後記

"We'd like to pretend that 'Fredrik' is a role, but even hundreds of volunteers couldn't possibly keep up. No, 'Fredrik' is the result of crossing an http server with a spam filter with an emacs whatsit and some other stuff besides."
-Gordon McMillan, June 1998

Python 2.0發佈附帶了一個包含200個以上模塊的可擴展的標準庫. 本書簡要地介紹每個模塊並提供至少一個例子來說明如何使用它. 本書一共包含360個例子.

0.1. 關於本書

"Those people who have nothing better to do than post on the Internet all day long are rarely the ones who have the most insights."
- Jakob Nielsen, December 1998

五年前我偶然遇到了 Python, 開始了我的 Python 之旅, 我花費了大量的時間 在 comp.lang.python 新聞組裡回答問題. 也許某個人發現一個模塊正是他想要的, 但是卻不知道如何使用它. 也許某個人為他的任務挑選的不合適的模塊. 也許某個人已經厭 倦了發明新輪子. 大多時候, 一個簡短的例子要比一份手冊文檔更有幫助.

本書是超過3,000個新聞組討論的精華部分, 當然也有很多的新腳本, 為了涵蓋標準庫的每個角落.

我儘力使得每個腳本都易於理解, 易於重用代碼. 我有意縮短註釋的長度, 如果你想更深入地 瞭解背景, 那麼你可以參閱每個 Python 發佈中的參考手冊. 本書的重要之處在於範例代碼.

我們歡迎任何評論, 建議, 以及 bug 報告, 請將它們發送到 [email protected]. 我將閱讀盡我所能閱讀所有的郵件, 但可能回覆不是那麼及時.

本書的相關更新內容以及其他信息請訪問 http://www.pythonware.com/people/fredrik/librarybook.htm

為什麼沒有Tkinter?

本書涵蓋了整個標準庫, 除了(可選的)Tkinter ui(user-interface : 用戶界面) 庫. 有很多原因, 更多是因為時間, 本書的空間, 以及我正在寫另一本關於 Tkinter 的書.

關於這些書的信息, 請訪問 http://www.pythonware.com/people/fredrik/tkinterbook.htm. (不用看了,又一404)

產品細節

本書使用DocBook SGML編寫, 我使用了一系列的工具, 包括Secret Labs' PythonWorks, Excosoft Documentor, James Clark's Jade DSSSL processor, Norm Walsh's DocBook stylesheets, 當然,還有一些 Python 腳本.

感謝幫忙校對的人們: Tim Peters, Guido van Rossum, David Ascher, Mark Lutz, 和 Rael Dornfest, 以及 PythonWare 成員: Matthew Ellis, Håkan Karlsson, 和 Rune Uhlin.

感謝 Lenny Muellner, 他幫助我把SGML文件轉變為你們現在所看到的這本書, 以及Christien Shangraw, 他將那些代碼文件集合起來做成了隨書CD (可以在http://examples.oreilly.com/pythonsl 找到, 竟然沒有404, 奇跡).

0.2. 代碼約定

本書使用以下習慣用法:

斜體

用於文件名和命令. 還用於定義術語.

等寬字體 e.g. Python

用於代碼以及方法,模塊,操作符,函數,語句,屬性等的名稱.

等寬粗體

用於代碼執行結果.

0.3. 關於例子

除非提到,所有例子都可以在 Python 1.5.2 和 Python 2.0 下運行. 能不能在 Python 2.4/2.5 下執行.....看參與翻譯各位的了.

除了一些平臺相關模塊的腳本, 所有例子都可以在 Windows, Solaris, 以及 Linux 下正常執行.

所有代碼都是有版權的. 當然,你可以自由地使用這些這些模塊,別忘記你是從哪得到(?學會)這些的.

大多例子的文件名都包含它所使用的模塊名稱,後邊是 "-example-" 以及一個唯一的"序號". 註意有些例子並不是按順序出現的, 這是為了匹配本書的較早版本 - (the eff-bot guide to) The Standard Python Library.

你可以在網上找到本書附帶CD的內容 (參閱 http://examples.oreilly.com/pythonsl). 更多信息以及更新內容參閱http://www.pythonware.com/people/fredrik/librarybook.htm. (ft, 又一404. 大家一定不要看~)

0.4. 如何聯繫我們

Python 江湖 QQ 群: 43680167

Feather (校對) QQ: 85660100


1. 核心模塊

"Since the functions in the C runtime library are not part of the Win32 API, we believe the number of applications that will be affected by this bug to be very limited."
- Microsoft, January 1999

1.1. 介紹

Python 的標準庫包括了很多的模塊, 從 Python 語言自身特定的類型和聲明, 到一些只用於少數程式的不著名的模塊.

本章描述了一些基本的標準庫模塊. 任何大型 Python 程式都有可能直接或間接地使用到這類模塊的大部分.

1.1.1. 內建函數和異常

下麵的這兩個模塊比其他模塊加在一起還要重要: 定義內建函數(例如 len, int, range ...)的 _ _builtin_ _ 模塊, 以及定義所有內建異常的 exceptions模塊.

Python 在啟動時導入這兩個模塊, 使任何程式都能夠使用它們.

1.1.2. 操作系統介面模塊

Python 有許多使用了 POSIX 標準 API 和標準 C 語言庫的模塊. 它們為底層操作系統提供了平臺獨立的介面.

這類的模塊包括: 提供文件和進程處理功能的 os 模塊; 提供平臺獨立的文件名處理 (分拆目錄名, 文件名, 尾碼等)的 os.path 模塊; 以及時間日期處理相關的 time/datetime 模塊.

[!Feather註: datetime 為 Py2.3 新增模塊, 提供增強的時間處理方法 ]

延伸一點說, 網路和線程模塊同樣也可以歸為這一個類型. 不過 Python 並沒有在所有的平臺/版本實現這些.

1.1.3. 類型支持模塊

標準庫里有許多用於支持內建類型操作的庫. string 模塊實現了常用的字元串處理. math 模塊提供了數學計算操作和常量(pi, e都屬於這類常量), cmath模塊為複數提供了和 math 一樣的功能.

1.1.4. 正則表達式

re 模塊為 Python 提供了正則表達式支持. 正則表達式是用於匹配字元串或特定子字元串的 有特定語法的字元串模式.

1.1.5. 語言支持模塊

sys 模塊可以讓你訪問解釋器相關參數,比如模塊搜索路徑,解釋器版本號等. operator 模塊提供了和內建操作符作用相同的函數. copy 模塊允許 你複製對象, Python 2.0 新加入的 gc 模塊提供了對垃圾收集的相關控制功能.


1.2. _ _builtin_ _ 模塊

這個模塊包含 Python 中使用的內建函數. 一般不用手動導入這個模塊; Python會幫你做好一切.

1.2.1. 使用元組或字典中的參數調用函數

Python允許你實時地創建函數參數列表. 只要把所有的參數放入一個元組中, 然後通過內建的 apply 函數調用函數. 如 Example 1-1.

1.2.1.1. Example 1-1. 使用 apply 函數

File: builtin-apply-example-1.py def function(a, b): print a, b apply(function, ("whither", "canada?")) apply(function, (1, 2 + 3)) whither canada? 1 5

要想把關鍵字參數傳遞給一個函數, 你可以將一個字典作為 apply 函數的第 3 個參數, 參考 Example 1-2.

1.2.1.2. Example 1-2. 使用 apply 函數傳遞關鍵字參數

File: builtin-apply-example-2.py def function(a, b): print a, b apply(function, ("crunchy", "frog")) apply(function, ("crunchy",), {"b": "frog"}) apply(function, (), {"a": "crunchy", "b": "frog"}) crunchy frog crunchy frog crunchy frog

apply 函數的一個常見用法是把構造函數參數從子類傳遞到基類, 尤其是構造函數需要接受很多參數的時候. 如 Example 1-3 所示.

1.2.1.3. Example 1-3. 使用 apply 函數調用基類的構造函數

File: builtin-apply-example-3.py class Rectangle: def _ _init_ _(self, color="white", width=10, height=10): print "create a", color, self, "sized", width, "x", height class RoundedRectangle(Rectangle): def _ _init_ _(self, **kw): apply(Rectangle._ _init_ _, (self,), kw) rect = Rectangle(color="green", height=100, width=100) rect = RoundedRectangle(color="blue", height=20) create a green <Rectangle instance at 8c8260> sized 100 x 100 create a blue <RoundedRectangle instance at 8c84c0> sized 10 x 20

Python 2.0 提供了另個方法來做相同的事. 你只需要使用一個傳統的函數調用 , 使用 * 來標記元組, ** 來標記字典.

下麵兩個語句是等價的:

result = function(*args, **kwargs) result = apply(function, args, kwargs)

1.2.2. 載入和重載模塊

如果你寫過較龐大的 Python 程式, 那麼你就應該知道 import 語句是用來導入外部模塊的 (當然也可以使用 from-import 版本). 不過你可能不知道import 其實是靠調用內建 函數 _ _import_ _ 來工作的.

通過這個戲法你可以動態地調用函數. 當你只知道模塊名稱(字元串)的時候, 這將很方便. Example 1-4 展示了這種用法, 動態地導入所有以 "-plugin" 結尾的模塊.

1.2.2.1. Example 1-4. 使用 _ _import_ _ 函數載入模塊

File: builtin-import-example-1.py import glob, os modules = [] for module_file in glob.glob("*-plugin.py"): try: module_name, ext = os.path.splitext(os.path.basename(module_file)) module = _ _import_ _(module_name) modules.append(module) except ImportError: pass # ignore broken modules # say hello to all modules for module in modules: module.hello() example-plugin says hello

註意這個 plug-in 模塊文件名中有個 "-" (hyphens). 這意味著你不能使用普通的 import 命令, 因為 Python 的辨識符不允許有 "-" .

Example 1-5 展示了 Example 1-4 中使用的 plug-in .

1.2.2.2. Example 1-5. Plug-in 例子

File: example-plugin.py def hello(): print "example-plugin says hello"

Example 1-6 展示瞭如何根據給定模塊名和函數名獲得想要的函數對象.

1.2.2.3. Example 1-6. 使用 _ _import_ _ 函數獲得特定函數

File: builtin-import-example-2.py def getfunctionbyname(module_name, function_name): module = _ _import_ _(module_name) return getattr(module, function_name) print repr(getfunctionbyname("dumbdbm", "open")) <function open at 794fa0>

你也可以使用這個函數實現延遲化的模塊導入 (lazy module loading). 例如在 Example 1-7 中 的 string 模塊只在第一次使用的時候導入.

1.2.2.4. Example 1-7. 使用 _ _import_ _ 函數實現 延遲導入

File: builtin-import-example-3.py class LazyImport: def _ _init_ _(self, module_name): self.module_name = module_name self.module = None def _ _getattr_ _(self, name): if self.module is None: self.module = _ _import_ _(self.module_name) return getattr(self.module, name) string = LazyImport("string") print string.lowercase abcdefghijklmnopqrstuvwxyz

Python 也提供了重新載入已載入模塊的基本支持. [Example 1-8 #eg-1-8 會載入 3 次 hello.py 文件.

1.2.2.5. Example 1-8. 使用 reload 函數

File: builtin-reload-example-1.py import hello reload(hello) reload(hello) hello again, and welcome to the show hello again, and welcome to the show hello again, and welcome to the show

reload 直接接受模塊作為參數.

[!Feather 註: ^ 原句無法理解, 稍後討論.]

註意,當你重載入模塊時, 它會被重新編譯, 新的模塊會代替模塊字典里的老模塊. 但是, 已經用原模塊里的類建立的實例仍然使用的是老模塊(不會被更新).

同樣地, 使用 from-import 直接創建的到模塊內容的引用也是不會被更新的.

1.2.3. 關於名稱空間

dir 返回由給定模塊, 類, 實例, 或其他類型的所有成員組成的列表. 這可能在互動式 Python 解釋器下很有用, 也可以用在其他地方. Example 1-9展示了 dir函數的用法.

1.2.3.1. Example 1-9. 使用 dir 函數

File: builtin-dir-example-1.py def dump(value): print value, "=>", dir(value) import sys dump(0) dump(1.0) dump(0.0j) # complex number dump([]) # list dump({}) # dictionary dump("string") dump(len) # function dump(sys) # module 0 => [] 1.0 => [] 0j => ['conjugate', 'imag', 'real'] [] => ['append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort'] {} => ['clear', 'copy', 'get', 'has_key', 'items', 'keys', 'update', 'values'] string => [] <built-in function len> => ['_ _doc_ _', '_ _name_ _', '_ _self_ _'] <module 'sys' (built-in)> => ['_ _doc_ _', '_ _name_ _', '_ _stderr_ _', '_ _stdin_ _', '_ _stdout_ _', 'argv', 'builtin_module_names', 'copyright', 'dllhandle', 'exc_info', 'exc_type', 'exec_prefix', 'executable', ...

在例子 Example 1-10中定義的 getmember 函數返回給定類定義的所有類級別的屬性和方法.

1.2.3.2. Example 1-10. 使用 dir 函數查找類的所有成員

File: builtin-dir-example-2.py class A: def a(self): pass def b(self): pass class B(A): def c(self): pass def d(self): pass def getmembers(klass, members=None): # get a list of all class members, ordered by class if members is None: members = [] for k in klass._ _bases_ _: getmembers(k, members) for m in dir(klass): if m not in members: members.append(m) return members print getmembers(A) print getmembers(B) print getmembers(IOError) ['_ _doc_ _', '_ _module_ _', 'a', 'b'] ['_ _doc_ _', '_ _module_ _', 'a', 'b', 'c', 'd'] ['_ _doc_ _', '_ _getitem_ _', '_ _init_ _', '_ _module_ _', '_ _str_ _']

getmembers 函數返回了一個有序列表. 成員在列表中名稱出現的越早, 它所處的類層次就越高. 如果無所謂順序的話, 你可以使用字典代替列表.

[!Feather 註: 字典是無序的, 而列表和元組是有序的, 網上有關於有序字典的討論]

vars 函數與此相似, 它返回的是包含每個成員當前值的字典. 如果你使用不帶參數的 vars , 它將返回當前局部名稱空間的可見元素(同 locals() 函數 ). 如 Example 1-11所表示.

1.2.3.3. Example 1-11. 使用 vars 函數

File: builtin-vars-example-1.py book = "library2" pages = 250 scripts = 350 print "the %(book)s book contains more than %(scripts)s scripts" % vars() the library book contains more than 350 scripts

1.2.4. 檢查對象類型

Python 是一種動態類型語言, 這意味著給一個定變數名可以在不同的場合綁定到不同的類型上. 在接下麵例子中, 同樣的函數分別被整數, 浮點數, 以及一個字元串調用:

def function(value): print value function(1) function(1.0) function("one")

type 函數 (如 Example 1-12 所示) 允許你檢查一個變數的類型. 這個函數會返回一個 type descriptor (類型描述符), 它對於 Python 解釋器提供的每個類型都是不同的.

1.2.4.1. Example 1-12. 使用 type 函數

File: builtin-type-example-1.py def dump(value): print type(value), value dump(1) dump(1.0) dump("one") <type 'int'> 1 <type 'float'> 1.0 <type 'string'> one

每個類型都有一個對應的類型對象, 所以你可以使用 is 操作符 (對象身份?) 來 檢查類型. (如 Example 1-13所示).

1.2.4.2. Example 1-13. 對文件名和文件對象使用 type 函數

File: builtin-type-example-2.py def load(file): if isinstance(file, type("")): file = open(file, "rb") return file.read() print len(load("samples/sample.jpg")), "bytes" print len(load(open("samples/sample.jpg", "rb"))), "bytes" 4672 bytes 4672 bytes

callable 函數, 如 Example 1-14 所示, 可以檢查一個對象是否是可調用的 (無論是直接調用或是通過 apply). 對於函數, 方法, lambda 函式, 類, 以及實現了 _ _call_ _ 方法的類實例, 它都返回 True.

1.2.4.3. Example 1-14. 使用 callable 函數

File: builtin-callable-example-1.py def dump(function): if callable(function): print function, "is callable" else: print function, "is *not* callable" class A: def method(self, value): return value class B(A): def _ _call_ _(self, value): return value a = A() b = B() dump(0) # simple objects dump("string") dump(callable) dump(dump) # function dump(A) # classes dump(B) dump(B.method) dump(a) # instances dump(b) dump(b.method) 0 is *not* callable string is *not* callable <built-in function callable> is callable <function dump at 8ca320> is callable A is callable B is callable <unbound method A.method> is callable <A instance at 8caa10> is *not* callable <B instance at 8cab00> is callable <method A.method of B instance at 8cab00> is callable

註意類對象 (A 和 B) 都是可調用的; 如果調用它們, 就產生新的對象(類實例). 但是 A 類的實例不可調用, 因為它的類沒有實現 _ _call_ _ 方法.

你可以在 operator 模塊中找到檢查對象是否為某一內建類型(數字, 序列, 或者字典等) 的函數. 但是, 因為創建一個類很簡單(比如實現基本序列方法的類), 所以對這些 類型使用顯式的類型判斷並不是好主意.

在處理類和實例的時候會複雜些. Python 不會把類作為本質上的類型對待; 相反地, 所有的類都屬於一個特殊的類類型(special class type), 所有的類實例屬於一個特殊的實例類型(special instance type).

這意味著你不能使用 type 函數來測試一個實例是否屬於一個給定的類; 所有的實例都是同樣 的類型! 為瞭解決這個問題, 你可以使用 isinstance 函數,它會檢查一個對象是 不是給定類(或其子類)的實例. Example 1-15 展示了 isinstance 函數的使用.

1.2.4.4. Example 1-15. 使用 isinstance 函數

File: builtin-isinstance-example-1.py class A: pass class B: pass class C(A): pass class D(A, B): pass def dump(object): print object, "=>", if isinstance(object, A): print "A", if isinstance(object, B): print "B", if isinstance(object, C): print "C", if isinstance(object, D): print "D", print a = A() b = B() c = C() d = D() dump(a) dump(b) dump(c) dump(d) dump(0) dump("string") <A instance at 8ca6d0> => A <B instance at 8ca750> => B <C instance at 8ca780> => A C <D instance at 8ca7b0> => A B D 0 => string =>

issubclass 函數與此相似, 它用於檢查一個類對象是否與給定類相同, 或者是給定類的子類. 如 Example 1-16 所示.

註意, isinstance 可以接受任何對象作為參數, 而 issubclass 函數在接受非類對象參 數時會引發 TypeError 異常.

1.2.4.5. Example 1-16. 使用 issubclass 函數

File: builtin-issubclass-example-1.py class A: pass class B: pass class C(A): pass class D(A, B): pass def dump(object): print object, "=>", if issubclass(object, A): print "A", if issubclass(object, B): print "B", if issubclass(object, C): print "C", if issubclass(object, D): print "D", print dump(A) dump(B) dump(C) dump(D) dump(0) dump("string") A => A B => B C => A C D => A B D 0 => Traceback (innermost last): File "builtin-issubclass-example-1.py", line 29, in ? File "builtin-issubclass-example-1.py", line 15, in dump TypeError: arguments must be classes

1.2.5. 計算 Python 表達式

Python 提供了在程式中與解釋器交互的多種方法. 例如 eval 函數將一個字元串 作為 Python 表達式求值. 你可以傳遞一串文本, 簡單的表達式, 或者使用 內建 Python 函數. 如 Example 1-17 所示.

1.2.5.1. Example 1-17. 使用 eval 函數

File: builtin-eval-example-1.py def dump(expression): result = eval(expression) print expression, "=>", result, type(result) dump("1") dump("1.0") dump("'string'") dump("1.0 + 2.0") dump("'*' * 10") dump("len('world')") 1 => 1 <type 'int'> 1.0 => 1.0 <type 'float'> 'string' => string <type 'string'> 1.0 + 2.0 => 3.0 <type 'float'> '*' * 10 => ********** <type 'string'> len('world') => 5 <type 'int'>

如果你不確定字元串來源的安全性, 那麼你在使用 eval 的時候會遇到些麻煩. 例如, 某個用戶可能會使用 _ _import_ _ 函數載入 os 模塊, 然後從硬碟刪除文件

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 摘要:Python,windows安裝 1、進入python的官方網站下載:https://www.python.org 點擊Download,選擇windows版本: 2、下載完成後,點擊運行,直接下一步,直到Finish 3、安裝完成後,在開始菜單-->程式 >附件中啟動命令提示符(快捷鍵:WI ...
  • ...
  • PHP 支持八種原始類型(type)。 四種標量類型: 兩種複合類型: 兩種特殊類型: 字元串類型 一個字元串是一串字元的序列,就像 "Hello world!"。 定義字元串有 3 種方法: 1.單引號定義 將字元串用單引號(')括起來是定義字元串最簡單的方法: 如果字元串中有單引號,那麼需要使用 ...
  • Given a sorted array, remove the duplicates in place such that each element appear only once and return the new length. Do not allocate extra space fo ...
  • Given an array and a value, remove all instances of that value in place and return the new length. Do not allocate extra space for another array, you ...
  • Day 15 集合框架01 TreeSet02 TreeSet存儲自定義對象03 二叉樹04 實現Comparator方式排序05 TreeSet練習06 泛型概述07 泛型使用08 泛型類09 泛型方法10 靜態方法泛型11 泛型介面12 泛型限定13 泛型限定2 01 TreeSet |--Se ...
  • 出自:http://www.diybl.com/course/3_program/python/20111130/563643.html 模塊名: 小寫字母,單詞之間用_分割 ad_stats.py 包名: 和模塊名一樣 類名: 單詞首字母大寫 AdStats ConfigUtil 全局變數名(類變 ...
  • 目標:tomcat伺服器提供的介面,不能在其他域中訪問的時候,需要增 Access-Control-Allow-Origin:* 直接配置的方法很多,但是我一個沒有成功過,所以只能自己寫攔截器了。 1. 編寫攔截器代碼 新建一個類,實現Filter介面,代碼如下 2. 配置web.xml 3. 刪除 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...