2014-10-04 5 views
0

제 CS 숙제 - Wesley Chun의 "Core Python Programming"에서 연습 문제 12-6. 목적은 확장 가져 오기를 import ... as이 구현되지 않은 경우와 같은 기능으로 모방하는 것입니다.Python에서 함수를 사용하여 확장 가져 오기

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

foo = importAs(os) 

foo = importAs(os)에서 NameError: name 'os' is not defined를 얻을 : 반면,

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

foo = importAs('os') 

File "<string>", line 1에서 import os에서 SyntaxError: invalid syntax를 얻을 :이 오류를 얻을 둘 다 내 시도이다.

아무도 이유를 설명하고 해결책을 제공해 주시겠습니까?

편집 : 보관하십시오 그것은 단지 표현을 평가할 수 있습니다 만 :)

+0

가능한 중복 (http://stackoverflow.com/questions/17136772/eval-to-import-a-module) –

답변

1

eval 2.x으로. 그리고 import은 성명서이므로 작동하지 않습니다.

작업에 importlib 모듈을 사용해야합니다. 또한

eval to import a module

[모듈을 가져올 평가 후면]의
+0

의 살펴보고 내 코드 블록을 참조하고 있습니까? 두 번째 경우 'foo = importAs ('os ')'로 변경 한 후 아래 오류가 발생합니다. 'importError : 'importAs'의'import name'에'moduleEnonymous module'이 없습니다. – underlandian

+0

오케이, 나는 틀렸어. 나는 그것에 파고 할 필요가있다 : –

+0

내 새로운 대답을 참조하십시오. –