Mar*_*tin 2 python return exec
我有一个小问题exec().我有来自Kivy GUI的字符串,我需要执行并存储执行代码中的值.
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
Run Code Online (Sandbox Code Playgroud)
这是'Code'中的一个字符串:
def values():
x=np.linspace(0,3.14,100)
y=np.sin(x)
print(x) # of course works
return x,y
x,y=values()
Run Code Online (Sandbox Code Playgroud)
一切都工作,除了我不能从exec(代码)获取值x,y.它像exec()是完全独立的操作,可以启动但无法输入.
Dan*_*iel 11
您应该exec使用本地命名空间调用:
loc = {}
exec(Code, {}, loc)
x = loc['x']
y = loc['y']
Run Code Online (Sandbox Code Playgroud)