模塊
- 簡介
你已經學習瞭如何在你的程序中定義一次函數而重用代碼。如果你想要在其他程序中重用很多函數,那麼你該如何編寫程序呢?你可能已經猜到了,答案是使用模塊。模塊基本上就是一個包含了所有你定義的函數和變量的文件。爲了在其他程序中重用模塊,模塊的文件名必須以.py爲擴展名。
模塊可以從其他程序輸入以便利用它的功能。這也是我們使用Python標準庫的方法。
下面的例子告訴我們如何使用標準庫模塊。
import sys
print 'The command line arguments are:'
for i in sys .argv:
print i
print '\n\nThe PYTHONPATH is' , sys .path, '\n'
輸出
The command line arguments are:
D:\HelloWord\src\moudle\test\sysModuleTest.py
The PYTHONPATH is ['D:\\HelloWord\\src\\moudle\\test', 'D:\\HelloWord\\src',
'D:\\Java\\Python27\\python27.zip', 'D:\\Java\\Python27\\DLLs', 'D:\\Java\\Python27\\lib',
'D:\\Java\\Python27\\lib\\plat-win', 'D:\\Java\\Python27\\lib\\lib-tk',
'D:\\Java\\Python27', 'D:\\Java\\Python27\\lib\\site-packages']
首先,我們利用import語句輸入sys模塊。
當Python執行import sys語句的時候,它在sys.path變量中所列目錄中尋找sys.py模塊。如果找到了這個文件,這個模塊的主塊中的語句將被運行,然後這個模塊將能夠被你使用。
sys模塊中的argv變量通過使用點號指明,sys.argv這種方法的一個優勢是這個名稱不會與任何在你的程序中使用的argv變量衝突。另外,它也清晰地表明瞭這個名稱是sys模塊的一部分。
sys.argv變量是一個字符串的列表。
注意:1)Python從0開始計數,而非從1開始。
2)初始化過程僅在我們第一次輸入模塊的時候進行。
3)“sys”是“system”的縮寫。
- 字節編譯的.pyc文件
輸入一個模塊相對來說是一個比較費時的事情,所以Python做了一些技巧,以便使輸入模塊更加快一些。一種方法是創建字節編譯的文件,這些文件以.pyc作爲擴展名。字節編譯的文件與Python變換程序的中間狀態有關。當你在下次從別的程序輸入這個模塊的時候,.pyc文件是十分有用的,因爲一部分輸入模塊所需的處理已經完成了。另外,這些字節編譯的文件也是與平臺無關的。
- from..import語句
如果你想要直接輸入argv變量到你的程序中(避免在每次使用它時打sys.),那麼你可以使用from sys import argv語句。如果你想要輸入所有sys模塊使用的名字,那麼你可以使用from sys import *語句。這對於所有模塊都適用。一般說來,應該避免使用from..import而使用import語句,因爲這樣可以使你的程序更加易讀,也可以避免名稱的衝突。
- 模塊的__name__
每個模塊都有一個名稱,在模塊中可以通過語句來找出模塊的名稱。當一個模塊被第一次輸入的時候,這個模塊的主塊將被運行。假如我們只想在程序本身被使用的時候運行主塊,而在它被別的模塊輸入的時候不運行主塊,我們該怎麼做呢?這可以通過模塊的name屬性完成。
使用模塊的__name__的方法見下面示例
if __name__ == '__main__' :
print 'This program is being run by itself'
else :
print 'I am being imported from another module'
輸出
$ python using_name.py
This program is being run by itself
$ python
>>> import using_name
I am being imported from another
module
>>>
每個Python模塊都有它的__name__,如果它是'__main__',這說明這個模塊被用戶單獨運行,我們可以進行相應的恰當操作。
- 製造你自己的模塊
創建你自己的模塊是十分簡單的,你一直在這樣做!每個Python程序也是一個模塊。你已經確保它具有.py擴展名了。下面這個例子將會使它更加清晰。
創建你自己的模塊的方法見下面示例:
1.首先,我們先創建一個自己的模塊,它與我們普通的Python程序相比並沒有什麼特別之處。
def sayhi ():
print 'Hi, this is mymodule speaking.'
version = '0.1'
2.然後,看看如何在我們別的Python程序中使用這個模塊。
import mymodule
mymodule.sayhi()
print 'Version' , mymodule.version
輸出
Hi, this is mymodule speaking.
Version 0.1
- dir()函數
你可以使用內建的dir函數來列出模塊定義的標識符。標識符有函數、類和變量。當你爲dir()提供一個模塊名的時候,它返回模塊定義的名稱列表。如果不提供參數,它返回當前模塊中定義的名稱列表。