Python編程語言如何進行模塊化修改
Python編程語言在使用的時候有很多的知識需要我們學(xué)習(xí)。尤其是在結(jié)構(gòu)模塊化上的修改和組建中,需要我們掌握很多的知識。下面我們就來詳細(xì)的學(xué)習(xí)下相關(guān)技術(shù)知識。
模塊搜索路徑:導(dǎo)入一個叫spam的模塊時,解釋器先在當(dāng)前目錄中搜索名為spam.py的文件,然后在環(huán)境變量PYTHONPATH指琮的目錄列表中搜索,然后是環(huán)境變量PATH中的路徑列表。如果PYTHONPATH沒有設(shè)置,或者文件沒有找到,接下來搜索安裝目錄,在UNIX中,通常是 .:/usr/local/lib/python編程語言。實際上,解釋器由sys.path變量指定的路徑目錄搜索模塊,該變量初始化時默認(rèn)包含了輸入腳本(或者當(dāng)前目錄),PATHPATH和安裝目錄。
包通常是使用用“圓點模塊名”的結(jié)構(gòu)化模塊命名空間。例如,名為A.B的模塊表示了名為“A”的包中名為“B”的子模塊。正如同用模塊來保存不同的模塊架構(gòu)可以避免全局變量之間的相互沖突,使用圓點模塊名保存像NunPy或Python Imaging Library之類的不同類庫架構(gòu)可以避免模塊之間的命名沖突。
導(dǎo)入模塊時,Python編程語言通過sys.path中的目錄列表來搜索存放包的子目錄。
必須要有一個__init__.py 文件的存在,才能使Python編程語言視該目錄為一個包;這是為了防止某些目錄使用了“string”這樣的通用名而無意中在隨后的模塊搜索路徑中覆蓋了正確的模塊。最簡單的情況下,__init__.py 可以只是一個空文件,不過它也可能包含了包的初始化代碼,或者設(shè)置了 __all__ 變量.
包用戶可以從包中導(dǎo)入合法的模塊,例如:
- import Sound.Effects.echo
這樣就導(dǎo)入了Sound.Effects.echo子模塊。它必需通過完整的名稱來引用。
- Sound.Effects.echo.echofilter(input, output,
delay=0.7, atten=4)
導(dǎo)入包時有一個可以選擇的方式:
- from Sound.Effects import echo
這樣就加載了echo子模塊,并且使得它在沒有包前綴的情況下也可以使用,所以它可以如下方式調(diào)用:
- echo.echofilter(input, output, delay=0.7, atten=4)
還有另一種變體用于直接導(dǎo)入函數(shù)或變量:
- from Sound.Effects.echo import echofilter
這樣就又一次加載了echo子模塊,但這樣就可以直接調(diào)用它的 echofilter() 函數(shù):
- echofilter(input, output, delay=0.7, atten=4)
需要注意的是使用 from package import item 方式導(dǎo)入包時,這個子項(item)既可以是包中的一個子模塊(或一個子包),也可以是包中定義的其它命名,像函數(shù)、類或變量。import 語句首先核對是否包中有這個子項,如果沒有,它假定這是一個模塊,并嘗試加載它。如果沒有找到它,會引發(fā)一個 ImportError 異常。
相反,使用類似import item.subitem.subsubitem 這樣的語法時,這些子項必須是包,最后的子項可以是包或模塊,但不能是前面子項中定義的類、函數(shù)或變量。
Python編程語言又將功能相近的函數(shù)組成文件,稱之為模塊。 #t#
import 導(dǎo)入的搜索路徑是按sys.path值搜索。通過append()增加路徑。import語句可以將文件名導(dǎo)入當(dāng)前文件,從而通過該名字調(diào)用該文件的函數(shù)。(只是導(dǎo)入的文件名).from....import順序不變,用來初始化模塊,只在模塊第一次被導(dǎo)入時執(zhí)行。__name__;modlename.itemname的方法修改模塊中的全局變量。
字節(jié)編譯版。命令行中指定腳本文件名不產(chǎn)生.pyc文件.sys.ps1和sys.ps2在交互下有意義。
dir()列出模塊下定義的名字(不含內(nèi)置的) __builtin__
Python編程語言將功能相近的文件放在同一個文件夾下,該文件夾稱之為包
from包import模塊可以省略前面的包名。import只是導(dǎo)入的包名而已。
__init__.py文件標(biāo)志了所在文件夾是包。