| 導航:起始頁 > Dive Into Python > 函數編程 > 動態導入模塊 | << >> | ||||
深入 Python :Dive Into Python 中文版Python 從新手到專家 [Dip_5.4b_CPyUG_Release] |
|||||
好了,大道理談夠了。讓我們談談動態導入模塊吧。
首先,讓我們看一看正常的模塊導入。import module 語法查看搜索路徑,根據給定的名字尋找模塊并導入它們。你甚至可以這樣做:以逗號分割同時導入多個模塊,本章代碼前幾行就是這樣做的。
現在讓我們用動態導入做同樣的事。
>>> sys = __import__('sys')>>> os = __import__('os') >>> re = __import__('re') >>> unittest = __import__('unittest') >>> sys
>>> <module 'sys' (built-in)> >>> os >>> <module 'os' from '/usr/local/lib/python2.2/os.pyc'>
因此 __import__ 導入一個模塊,但是是通過一個字符串參數來做到的。依此處講,你用以導入的僅僅是一個硬編碼性的字符串,但它可以是一個變量,或者一個函數調用的結果。并且你指向模塊的變量也不必與模塊名匹配。你可以導入一系列模塊并把它們指派給一個列表。
>>> moduleNames = ['sys', 'os', 're', 'unittest']>>> moduleNames ['sys', 'os', 're', 'unittest'] >>> modules = map(__import__, moduleNames)
>>> modules
[<module 'sys' (built-in)>, <module 'os' from 'c:\Python22\lib\os.pyc'>, <module 're' from 'c:\Python22\lib\re.pyc'>, <module 'unittest' from 'c:\Python22\lib\unittest.pyc'>] >>> modules[0].version
'2.2.2 (#37, Nov 26 2002, 10:24:37) [MSC 32 bit (Intel)]' >>> import sys >>> sys.version '2.2.2 (#37, Nov 26 2002, 10:24:37) [MSC 32 bit (Intel)]'
現在,你應該能夠把這一切放在一起,并搞清楚本章大部分樣例代碼是做什么的。
<< 數據中心思想編程 |
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | |
全部放在一起 >> |