使用Python中的函数扩展导入

时间:2014-10-04 00:24:34

标签: python function import nameerror

这是我的CS作业 - 在Wesley Chun的“核心Python编程”中练习12-6。目标是使用类似于未实现import ... as的功能来模仿扩展导入。这些是我的尝试,两者都产生错误:

def importAs(name):
    eval('import '+name)
    ret = eval(name)
    eval('del '+name)
    return ret

foo = importAs('os')

这会在SyntaxError: invalid syntax的{​​{1}}处产生import os,同时:

File "<string>", line 1

def importAs(name): import name ret = name del name return ret foo = importAs(os) 处产生NameError: name 'os' is not defined

有人可以解释原因和解决方案吗?

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

1 个答案:

答案 0 :(得分:1)

eval只能评估表达式。 import是一个陈述,因此它不会起作用。

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

另请查看eval to import a module