1.3 包(Package) 1 模組(Module)和包(Package) 1.1 命名空間(Namespace) 由於在Python中一切皆為對象(Object), 想要好好理解Module和Package,一定要先理解Namespace的概念。 所謂Namespace,是指標示符的可見範圍。對於Python而言,常見的Namespace主要有以下幾種: Build-in Namespace (內建命名空間) Global Namespace (全域命名空間) Local Namespace (局部命名空間)
有了命名空間的概念,可以有效解決函數或者是變數重名的問題。不同的命名空間中允許出現相同的函數名或者 是變數名。它們彼此之間不會相互影響,例如在Namespace A和B中同時有一個名為var的變數,對A.var賦值並不 會改變B.var的值。 1.2 模組(Module)
Python中的一個Module對應的就是一個.py檔案。其中定義的所有函數或者是變數都屬於這個Module。這個Module 對於所有函數而言就相當於一個全域的命名空間。而每個函數又都有自己局部的命名空間。
# test.py '''This is only a test module'''age = 0def printHello(): print "Hello, world!"if __name__ == '__main__': printHello()
我們可這樣來使用這個module, 用t來作為test的別名
>>> import test as t>>> t.age0>>> t.age = 11>>> t.printHello()Hello, world!>>> print t.__doc__This is only a test module
當然,我們也可以這樣來使用:
>>> form test import *>>> age0>>> printHello()
你一定有注意到'__main__'的條件判斷,由於每一個module都有__name__的屬性,只有當直接運行 這個module的時候,__name__屬性才會等於__main__。當它被import的時候,你可以完全當它不存在。 1.3 包(Package)
所謂Package, 就是一堆module的集合,也就一堆.py檔案。 你可以用如下方式來建立一個package 建立一個folder名為test 在test檔案夾下建立一個空的__init__.py檔案。 在test檔案夾下建立下py檔案,名為a.py
# a.pydef sayHello(): print "Hello, world!">>> import test.a as t>>> t.sayHello()Hello, world!
Package 提供了一種很好的管理module的方式,可以有效減少module的命名conflict,保持較好的樹型結構。
HTML generated by org-mode 6.31a in emacs 23