Python动态导入-如何从变量中的模块名称中导入*?

Python动态导入-如何从变量中的模块名称中导入*?,第1张

Python动态导入-如何从变量中的模块名称中导入*?

您可以执行以下技巧:

>>> import importlib>>> globals().update(importlib.import_module('math').__dict__) >>> sin<built-in function sin>

被警告,使得所有可用的名称在模块中本地,所以它比略有不同

*
,因为它不是以
__all__
这样的例如,它也将重写
__name__
__package__
__loader__
__doc__

更新:

这是@mata在评论中)指出的更精确,更安全的版本:

module = importlib.import_module('math')globals().update(    {n: getattr(module, n) for n in module.__all__} if hasattr(module, '__all__')     else     {k: v for (k, v) in module.__dict__.items() if not k.startswith('_')})

特别感谢Nam G VU帮助使答案更加完整。



欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/zaji/5647560.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存