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