文件名称:通过字符串名导入模块-华为云大数据中台架构分享
文件大小:5.68MB
文件格式:PDF
更新时间:2024-07-01 05:00:50
Python cookbook 中文 参考
10.10 通过字符串名导入模块 问题 你想导入一个模块,但是模块的名字在字符串里。你想对字符串调用导入命 令。 解决方案 使用 importlib.import_module()函数来手动导入名字为字符串给出的一个模块或 者包的一部分。举个例子: >>> import importlib >>> math = importlib.import_module('math') >>> math.sin(2) 0.9092974268256817 >>> mod = importlib.import_module('urllib.request') >>> u = mod.urlopen('http://www.python.org') >>> import_module 只是简单地执行和 import 相同的步骤,但是返回生成的模块对 象。你只需要将其存储在一个变量,然后像正常的模块一样使用。 如果你正在使用的包,import_module()也可用于相对导入。但是,你需要给它 一个额外的参数。例如: import importlib # Same as 'from . import b' b = importlib.import_module('.b', __package__) 讨论 使用 import_module()手动导入模块的问题通常出现在以某种方式编写修改或覆 盖模块的代码时候。例如,也许你正在执行某种自定义导入机制,需要通过名 称来加载一个模块,通过补丁加载代码。 在旧的代码,有时你会看到用于导入的内建函数__import__()。尽管它能工 作,但是 importlib.import_module() 通常更容易使用。