您当前位置:首页 > 深入 Python > 函数式编程 > 动态导入模块 | << >> | ||||
深入 Python从 Python 新手到专家 |
好了,关于哲学的讨论就到此为止。让我们来谈谈如何动态导入模块。
首先,让我们看看通常如何导入模块。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 | |
整合所有内容 >> |