使用Python中的函数扩展导入

使用Python中的函数扩展导入,python,function,import,nameerror,Python,Function,Import,Nameerror,这是我的CS作业-Wesley Chun的“核心Python编程”中的练习12-6。目标是使用类似whenimport的函数模拟扩展导入。。。as未实施。以下是我的尝试,两者都会产生错误: def importAs(name): eval('import '+name) ret = eval(name) eval('del '+name) return ret foo = importAs('os') 这会在文件“”第1行的导入操作系统处产生一个语法错误:无效

这是我的CS作业-Wesley Chun的“核心Python编程”中的练习12-6。目标是使用类似when
import的函数模拟扩展导入。。。as
未实施。以下是我的尝试,两者都会产生错误:

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

foo = importAs('os')
这会在
文件“”第1行的
导入操作系统
处产生一个
语法错误:无效语法
,而:

def importAs(name):
    import name
    ret = name
    del name
    return ret

foo = importAs(os)
产生一个
name错误:在
foo=importAs(os)
处未定义名称“os”

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


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

eval
只能计算表达式。而
import
是一个语句,因此它不起作用

您应该使用模块完成任务


还可以看看

您指的是我的哪些代码块?如果它是第二个,那么在将其更改为
foo=importAs('os')
后,我得到以下错误:
importorror:在
importAs
中的
import name
处没有名为name的模块。这很有效,但由于本书中没有提到,它可能不是解决此问题的最佳方案。你能告诉我第二次尝试有什么问题吗?是的<代码>操作系统
在您尝试使用之前未定义。您可以阅读以查看正确的语法。我可以看到它不在名称空间中,因此出现了错误。我现在要和exec达成协议,但希望以后能找到一种方法将模块作为参数传递。可能是