10.模塊
a.模塊的使用
我們使用import …來導入一個模塊,也可以使用from … import …來導入一個模塊中指定的某些成員。例如,我們來導入一個標準模塊sys
#!/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'
輸出
$ 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']
其中We are arguments是參數。通過sys.argv可以看到,第一個參數sys.argv[0]是’using_sys.py’,永遠是文件名。後面的’we’是sys.argv[1]、’are’是sys.argv[2]以及’arguments’是sys.argv[3].調用一個模塊就是從指定的路徑(環境變量)中尋找該模塊。
b.模塊的__name__
對於每一個模塊,都有一個自己的__name__。當一個py文件被執行的時候,也可以把這個文件看作一個模塊,有它自己的__name__。如果它是’main‘,這說明這個模塊被用戶單獨運行;如果是被調用的話,則它是該模塊名。
#!/usr/bin/python
# 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
>>>
這樣的話我們可以在if __name__ == ‘__main__’:裏添加代碼用於測試這個模塊(或者說程序),這個時候,if __name__ == ‘__main__’的作用就和main函數一樣了。
c.創建自己的模塊
創建自己的模塊很簡單!確保它具有.py擴展名,然後把它放到和執行程序一樣的路徑中(或ys.path所列目錄之一)即可。注意,模塊裏的變量在外部調用時,要用’模塊名.變量名‘來使用。
#!/usr/bin/python
# Filename: mymodule.py
def sayhi():
print 'Hi, this is mymodule speaking.'
version = '0.1'
# End of mymodule.py
#!/usr/bin/python
# Filename: mymodule_demo.py
import mymodule
mymodule.sayhi()
print 'Version', mymodule.version
輸出:
$ python mymodule_demo.py
Hi, this is mymodule speaking.
Version 0.1