模組基本上就是乙個包含了所有你定義的函式和變數的檔案。為了在其他程式中重用模組,模組的檔名必須以.py為副檔名。
模組可以從其他程式 輸入 以便利用它的功能。這也是我們使用python標準庫的方法。首先,我們將學習如何使用標準庫模組。
#!/usr/bin/python
# filename: using_sys.py
import sys
print 'the command line arguments are:'
for i in sys.argv:
print i
執行結果
$ python using_sys.py we are arguments
the command line arguments are:
using_sys.py
weare
arguments
工作原理
首先,我們利用import語句 輸入 sys模組。基本上,這句語句告訴python,我們想要使用這個模組。sys模組包含了與python直譯器和它的環境有關的函式。
當python執行import sys語句的時候,它在sys.path變數中所列目錄中尋找sys.py模組。如果找到了這個檔案,這個模組的主塊中的語句將被執行,然後這個模組將能夠被你 使用 。注意,初始化過程僅在我們 第一次 輸入模組的時候進行。
sys模組中的argv變數通過使用點號指明——sys.argv——這種方法的乙個優勢是這個名稱不會與任何在你的程式中使用的argv變數衝突。另外,它也清晰地表明了這個名稱是sys模組的一部分。
這裡,當我們執行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所列的目錄之一。
模組的__name__
每個模組都有乙個名稱,在模組中可以通過語句來找出模組的名稱。這在乙個場合特別有用——就如前面所提到的,當乙個模組被第一次輸入的時候,這個模組的主塊將被執行。假如我們只想在程式本身被使用的時候執行主塊,而在它被別的模組輸入的時候不執行主塊,我們該怎麼做呢?這可以通過模組的__name__屬性完成。
例子2:
#!/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
>>>
每個python模組都有它的__name__,如果它是'__main__',這說明這個模組被使用者單獨執行,我們可以進行相應的操作。
如何建立你自己的模組
建立你自己的模組是十分簡單的,你一直在這樣做!每個python程式也是乙個模組。你已經確保它具有.py副檔名了。下面這個例子將會使它更加清晰。
例子3
#!/usr/bin/python
# filename: mymodule.py
def sayhi():
print 'hi, this is mymodule speaking.'
version = '0.1'
# end of mymodule.py
上面是乙個 模組 的例子。你已經看到,它與我們普通的python程式相比並沒有什麼特別之處。我們接下來將看看如何在我們別的python程式中使用這個模組。
記住這個模組應該被放置在我們輸入它的程式的同乙個目錄中,或者在sys.path所列目錄之一。
#!/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
它如何工作
注意我們使用了相同的點號來使用模組的成員。python很好地重用了相同的記號來,使我們這些python程式設計師不需要不斷地學習新的方法。
from..import
下面是乙個使用from..import語法的版本。
#!/usr/bin/python
# filename: mymodule_demo2.py
from mymodule import sayhi, version
# alternative:
# from mymodule import *
sayhi()
print 'version', version
模組與包
1.模組可以通過以下3種方式引用
(1)import
(2)import ... as ...
(3)from ... import ...
例如:
[root@node1 python]# python say.py
hello world
[root@node1 python]# cat say.py
#!/usr/bin/python
def say():
print 'hello world'
say()
[root@node1 python]# cat saysomething.py
import say
[root@node1 python]# python saysomething.py
hello world
(1)
[root@node1 python]# cat saysomething.py
import say
say.say()
[root@node1 python]# python saysomething.py
hello world
(2)
[root@node1 python]# cat saysomething.py
import say as s
s.say()
[root@node1 python]# python saysomething.py
hello world
(3)
[root@node1 python]# cat saysomething.py
from say import say
say()
[root@node1 python]# python saysomething.py
hello world
2.包
包的結構,需要目錄裡面存在__init__.py 檔案即可
[root@node1 python]# mkdir add
[root@node1 python]# vim add/operator.py
#!/usr/bin/python
def f(x,y):
return x+y
[root@node1 python]# touch add/__init__.py
[root@node1 python]# vim test.py
#!/usr/bin/python
import add.operator
print add.operator.f(1,2)
[root@node1 python]# python test.py
3
Python學習筆記4 模組
現在看看python中的模組吧 先貼上 main.py import module module.function module.py def function print execute function 一 引入模組 可以看到,我們使用關健字import引入模組,格式 import 模組名 不需...
python學習筆記 4 模組
常見的內建模組 模組匯入模組的語法 模組,在python裡乙個py檔案,就可以理解為模組 不是所有的py檔案都能作為模組來匯入 如果讓可以匯入,模組名字必須遵守命名規則 import time 1 使用import模組名直接匯入乙個模組 from random import randint 2 fr...
python學習(4)模組
模組是 py檔案,包是包含模組的資料夾,包與普通資料夾的不同之處是,包中總有乙個 init py檔案。模組和包的存在是為了防止重名。用import 語句匯入模組,用 from.import 語句匯入函式。我們經常需要動態匯入模組,可以參照下面的例子 try from cstringio import...