# 第8章 模塊
**目錄表**
+ 簡介
+ 使用sys模塊
+ 字節編譯的.pyc文件
+ from..import語句
+ 模塊的__name__
+ 使用模塊的__name__
+ 制造你自己的模塊
+ 創建你自己的模塊
+ from..import
+ dir()函數
+ 使用dir函數
+ 概括
你已經學習了如何在你的程序中定義一次函數而重用代碼。如果你想要在其他程序中重用很多函數,那么你該如何編寫程序呢?你可能已經猜到了,答案是使用模塊。模塊基本上就是一個包含了所有你定義的函數和變量的文件。為了在其他程序中重用模塊,模塊的文件名**必須**以`.py`為擴展名。
模塊可以從其他程序 輸入 以便利用它的功能。這也是我們使用Python標準庫的方法。首先,我們將學習如何使用標準庫模塊。
```
#!/usr/bin/python
# Filename: using_sys.py
import sys
print 'The command line arguments are:'
for i in sys.argv:
????print i
print '\n\nThe PYTHONPATH is', sys.path, '\n'
```
(源文件:[code/using_sys.py](code/using_sys.py))
## 輸出
```
$ python using_sys.py we are arguments
The command line arguments are:
using_sys.py
we
are
arguments
The PYTHONPATH is ['/home/swaroop/byte/code', '/usr/lib/python23.zip',
'/usr/lib/python2.3', '/usr/lib/python2.3/plat-linux2',
'/usr/lib/python2.3/lib-tk', '/usr/lib/python2.3/lib-dynload',
'/usr/lib/python2.3/site-packages', '/usr/lib/python2.3/site-packages/gtk-2.0']
```
## 它如何工作
首先,我們利用`import`語句 輸入 `sys`模塊。基本上,這句語句告訴Python,我們想要使用這個模塊。`sys`模塊包含了與Python解釋器和它的環境有關的函數。
當Python執行`import sys`語句的時候,它在`sys.path`變量中所列目錄中尋找`sys.py`模塊。如果找到了這個文件,這個模塊的主塊中的語句將被運行,然后這個模塊將能夠被你 使用 。注意,初始化過程僅在我們 第一次 輸入模塊的時候進行。另外,“sys”是“system”的縮寫。
`sys`模塊中的`argv`變量通過使用點號指明——`sys.argv`——這種方法的一個優勢是這個名稱不會與任何在你的程序中使用的`argv`變量沖突。另外,它也清晰地表明了這個名稱是`sys`模塊的一部分。
`sys.argv`變量是一個字符串的 列表 (列表會在后面的[章節](ch09s02.html)詳細解釋)。特別地,`sys.argv`包含了 命令行參數 的列表,即使用命令行傳遞給你的程序的參數。
如果你使用IDE編寫運行這些程序,請在菜單里尋找一個指定程序的命令行參數的方法。
這里,當我們執行`python using_sys.py we are arguments`的時候,我們使用**python**命令運行`using_sys.py`模塊,后面跟著的內容被作為參數傳遞給程序。Python為我們把它存儲在`sys.argv`變量中。
記住,腳本的名稱總是`sys.argv`列表的第一個參數。所以,在這里,`'using_sys.py'`是`sys.argv[0]`、`'we'`是`sys.argv[1]`、`'are'`是`sys.argv[2]`以及`'arguments'`是`sys.argv[3]`。注意,Python從0開始計數,而非從1開始。
`sys.path`包含輸入模塊的目錄名列表。我們可以觀察到`sys.path`的第一個字符串是空的——這個空的字符串表示當前目錄也是`sys.path`的一部分,這與`PYTHONPATH`環境變量是相同的。這意味著你可以直接輸入位于當前目錄的模塊。否則,你得把你的模塊放在`sys.path`所列的目錄之一。
- 版權信息
- 前言
- 本書的由來
- 本書目前的狀況
- 約定條款
- 反饋
- 值得思考的一些東西
- 第1章 介紹
- Python的特色
- 為什么不使用Perl?
- 程序員的話
- 第2章 安裝Python
- Windows?用戶
- 概括
- 第3章 最初的步驟
- 使用帶提示符的解釋器
- 挑選一個編輯器
- 使用源文件
- 可執行的Python程序
- 獲取幫助
- 概括
- 第4章 基本概念
- 數
- 字符串
- 變量
- 標識符的命名
- 數據類型
- 對象
- 邏輯行與物理行
- 縮進
- 概括
- 第5章 運算符與表達式
- 運算符
- 運算符優先級
- 表達式
- 概括
- 第6章 控制流
- if語句
- while語句
- for循環
- break語句
- continue語句
- 概括
- 第7章 函數
- 函數形參
- 局部變量
- 默認參數值
- 關鍵參數
- return語句
- DocStrings
- 概括
- 第8章 模塊
- 字節編譯的.pyc文件
- from..import語句
- 模塊的name
- 制造你自己的模塊
- dir()函數
- 概括
- 第9章 數據結構
- 列表
- 元組
- 字典
- 序列
- 參考
- 更多字符串的內容
- 概括
- 第10章 解決問題——編寫一個Python腳本
- 解決方案
- 軟件開發過程
- 概括
- 第11章 面向對象的編程
- self
- 類
- 對象的方法
- __init__方法
- 類與對象的方法
- 繼承
- 概括
- 第12章 輸入/輸出
- 儲存器
- 概括
- 第13章 異常
- try..except
- 引發異常
- try..finally
- 概括
- 第14章 Python標準庫
- sys模塊
- os模塊
- 概括
- 第15章 更多Python的內容
- 單語句塊
- 列表綜合
- 在函數中接收元組和列表
- lambda形式
- exec和eval語句
- assert語句
- repr函數
- 概括
- 第16章 接下來學習什么?
- 探索更多內容
- 概括
- 附錄A 自由/開放源碼軟件(FLOSS)
- 附錄B 關于本書
- 關于作者
- 關于譯者
- 關于簡體中文譯本
- 附錄C 修訂記錄
- 術語表