Python中模組和包的概念

2021-07-05 02:23:02 字數 1550 閱讀 6321

由於在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 

'''this is only a test module

'''age = 0

def printhello():

print "hello, world!"

if__name__ == '__main__':

printhello()

我們可這樣來使用這個module, 用t來作為test的別名

>>> 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 *

>>> age

0>>> printhello()

你一定有注意到'__main__'的條件判斷,由於每乙個module都有__name__的屬性,只有當直接執行 這個module的時候,__name__屬性才會等於__main__。當它被import的時候,你可以完全當它不存在。

所謂package, 就是一堆module的集合,也就一堆.py檔案。 你可以用如下方式來建立乙個package

新建乙個folder名為test

在test資料夾下新建乙個空的__init__.py檔案。

在test資料夾下新建下py檔案,名為a.py

# a.py

defsayhello():

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

Python模組和包的概念

模組 模組是python組織 的基本方式。乙個python指令碼可以單獨執行,也可以匯入到另乙個指令碼中執行,當指令碼被匯入執行時,我們將其稱為模組 module 所有的.py檔案都可以作為乙個模組匯入。模組名與指令碼的檔名相同。模組是乙個可以匯入的python指令碼檔案。例如我們編寫了乙個名為he...

Python 模組和包的概念

python 模組和包的概念 模組 包 模組 modue 的概念 在電腦程式的開發過程中,隨著程式 越寫越多,在乙個檔案裡 就會越來越長,越來越不容易維護。為了編寫可維護的 我們把很多函式分組,分別放到不同的檔案裡,這樣,每個檔案包含的 就相對較少,很多程式語言都採用這種組織 的方式。在python...

Python 模組和包的概念

模組 modue 的概念 在電腦程式的開發過程中,隨著程式 越寫越多,在乙個檔案裡 就會越來越長,越來越不容易維護。為了編寫可維護的 我們把很多函式分組,分別放到不同的檔案裡,這樣,每個檔案包含的 就相對較少,很多程式語言都採用這種組織 的方式。在python中,乙個.py檔案就稱之為乙個模組 mo...