模塊

1、模塊基本上就是一個包含了所有定義的函數和變量的文件。爲了在其他程序中重用模塊,模塊的文件名必須.py爲擴展名。模塊可以從其他程序 輸入 以便利用它的功能。

# Filename: using_sys.py

import sys

print 'The command line arguments are:'
for in sys.argv:
    print i

print '\n\nThe PYTHONPATH is'sys.path, '\n'

輸出

$ 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變量是一個字符串的 列表 。特別地,sys.argv包含了 命令行參數 的列表,即使用命令行傳遞給程序的參數。

這裏,執行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所列的目錄之一。


2、from...import語句

想要直接輸入argv變量到程序中(避免在每次使用它時打sys.),那麼可以使用from sys import argv語句。如果想要輸入所有sys模塊使用的名字,那麼你可以使用from sys import *語句。這對於所有模塊都適用。一般說來,應該避免使用from..import而使用import語句,因爲這樣可以使程序更加易讀,也可以避免名稱的衝突。


3、模塊的__name__

每個模塊都有一個名稱,在模塊中可以通過語句來找出模塊的名稱。這在一個場合特別有用——就如前面所提到的,當一個模塊被第一次輸入的時候,這個模塊的主塊將被運行。假如只想在程序本身被使用的時候運行主塊,而在它被別的模塊輸入的時候不運行主塊,該怎麼做呢?這可以通過模塊的__name__屬性完成。

# Filename: using_name.py

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__',這說明這個模塊被用戶單獨運行.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章