2016-08-07 1 views
0

exec()과 관련된 작은 문제가 있습니다. 실행 된 코드에서 값을 실행하고 저장해야하는 Kivy GUI의 문자열이 있습니다. 나는 값 X를 얻을 어차피 제외하고Python 3 - exec()에서 값을 반환해야합니다.

def values(): 
    x=np.linspace(0,3.14,100) 
    y=np.sin(x) 
    print(x) # of course works 
    return x,y 
x,y=values() 

모든 간부 (코드)에서 y를 작동합니다

class gui(BoxLayout): 
    def proces(self): 
     t = threading.Thread(target=self.graf) 
     t.daemon = True 
     t.start() 

    def graph(self): 

     CodeInput=self.ids.codas 
     Code=CodeInput.text 
     x, y = [], [] 
     exec(Code) 
     print(x,y) # empty list prints 
     # then x y will serve for plotting a graph 

이 은 '코드'내부 문자열입니다. 그것과 비슷한 exec()는 시작할 수 있지만 입력 할 수없는 완전히 별개의 작업입니다.

답변

2

당신은 로컬 네임 스페이스 exec을 호출해야합니다 :

loc = {} 
exec(Code, {}, loc) 
x = loc['x'] 
y = loc['y'] 
+0

정말 감사합니다. 답변이 도움이된다면 – Martin

+2

을 사용할 수 있습니다. 동의 해주십시오. – Daniel