我可以使用以下代码将字符串更改为变量,然后调用先前导入的库的函数。
>>> import sys
>>> x = 'sys'
>>> globals()[x]
<module 'sys' (built-in)>
>>> globals()[x].__doc__
如果没有先导入模块,我有一个变量字符串,但我不能使用与globals()[var]
相同的import
语法:
>>> y = 'os'
>>> globals()[y]
<module 'os' from '/usr/lib/python2.7/os.pyc'>
>>> import globals()[y]
File "<stdin>", line 1
import globals()[y]
^
SyntaxError: invalid syntax
>>> z = globals()[y]
>>> import z
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named z
是否可以输入字符串并导入与字符串输入同名的库?如果是,怎么做?
@ndpu和@paulobu回答说__import__()
允许字符串到库访问作为变量。但使用相同的变量名称而不是使用库的替代品是否存在问题? E.g:
>>> x = 'sys'
>>> sys = __import__(x)
答案 0 :(得分:3)
大多数Python程序员更喜欢使用importlib.import_module
而不是__import__
:
>>> from importlib import import_module
>>> mod = raw_input(":")
:sys
>>> sys = import_module(mod)
>>> sys
<module 'sys' (built-in)>
>>> sys.version_info # Just to demonstrate
sys.version_info(major=2, minor=7, micro=5, releaselevel='final', serial=0)
>>>
您可以阅读importlib.import_module
对__import__
here的偏好。
答案 1 :(得分:2)
使用__import__
功能:
x = 'sys'
sys = __import__(x)
答案 2 :(得分:1)
您正在寻找__import__
内置功能:
__import__(globals()[y])
基本用法:
>>>math = __import__('math')
>>>print math.e
2.718281828459045
您还可以按照另一个答案和importlib.import_module
文档中的建议查看__import__
。