使用Python中的函数扩展导入

Extended import with a function in Python

这是我在Wesley Chun的"核心python编程"中的CS家庭作业-练习12-6。目的是模仿扩展导入,使用类似于import ... as未实现的函数。这是我的尝试,两者都会产生错误:

1
2
3
4
5
6
7
def importAs(name):
    eval('import '+name)
    ret = eval(name)
    eval('del '+name)
    return ret

foo = importAs('os')

这在File"", line 1中产生SyntaxError: invalid syntaximport os处,而:

1
2
3
4
5
6
7
def importAs(name):
    import name
    ret = name
    del name
    return ret

foo = importAs(os)

foo = importAs(os)处生成NameError: name 'os' is not defined

有人能解释原因和解决办法吗?

编辑:请只保留2.x:)


eval只能计算表达式。而EDOCX1[1]是一个声明,所以它不起作用。

您应该使用importlib模块来完成您的任务。

还可以查看eval以导入模块