由於在python中一切皆為物件(object), 想要好好理解module和package,一定要先理解namespace的概念。 所謂namespace,是指標示符的可見範圍。對於python而言,常見的namespace主要有以下幾種:
build-in namespace (內建命名空間)
global namespace (全域性命名空間)
local namespace (區域性命名空間)
有了命名空間的概念,可以有效的解決函式或者是變數重名的問題。不同的命名空間中允許出現相同的函式名或者 是變數名。它們彼此之間不會相互影響,例如在namespace a和b中同時有乙個名為var的變數,對a.var賦值並不 會改變b.var的值。
python中的乙個module對應的就是乙個.py檔案。其中定義的所有函式或者是變數都屬於這個module。這個module 對於所有函式而言就相當於乙個全域性的命名空間。而每個函式又都有自己區域性的命名空間。
# test.py我們可這樣來使用這個module, 用t來作為test的別名'''this is only a test module
'''age = 0
def printhello():
print "hello, world!"
if__name__ == '__main__':
printhello()
>>> import test as t當然,我們也可以這樣來使用:>>> t.age
0>>> t.age = 1
1>>> t.printhello()
hello, world!
>>> print t.__doc__
this is only a test module
>>> form test import *你一定有注意到'__main__'的條件判斷,由於每乙個module都有__name__的屬性,只有當直接執行 這個module的時候,__name__屬性才會等於__main__。當它被import的時候,你可以完全當它不存在。>>> age
0>>> printhello()
所謂package, 就是一堆module的集合,也就一堆.py檔案。 你可以用如下方式來建立乙個package
新建乙個folder名為test
在test資料夾下新建乙個空的__init__.py檔案。
在test資料夾下新建下py檔案,名為a.py
# a.pypackage 提供了一種很好的管理module的方式,可以有效的減少module的命名conflict,保持較好的樹型結構。defsayhello():
print "hello, world!"
>>> import test.a as t
>>> t.sayhello()
hello, world!
html generated by org-mode 6.31a in emacs 23
Python模組和包的概念
模組 模組是python組織 的基本方式。乙個python指令碼可以單獨執行,也可以匯入到另乙個指令碼中執行,當指令碼被匯入執行時,我們將其稱為模組 module 所有的.py檔案都可以作為乙個模組匯入。模組名與指令碼的檔名相同。模組是乙個可以匯入的python指令碼檔案。例如我們編寫了乙個名為he...
Python 模組和包的概念
python 模組和包的概念 模組 包 模組 modue 的概念 在電腦程式的開發過程中,隨著程式 越寫越多,在乙個檔案裡 就會越來越長,越來越不容易維護。為了編寫可維護的 我們把很多函式分組,分別放到不同的檔案裡,這樣,每個檔案包含的 就相對較少,很多程式語言都採用這種組織 的方式。在python...
Python 模組和包的概念
模組 modue 的概念 在電腦程式的開發過程中,隨著程式 越寫越多,在乙個檔案裡 就會越來越長,越來越不容易維護。為了編寫可維護的 我們把很多函式分組,分別放到不同的檔案裡,這樣,每個檔案包含的 就相對較少,很多程式語言都採用這種組織 的方式。在python中,乙個.py檔案就稱之為乙個模組 mo...