Python 3 - 需要从exec()返回值

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)

  • 如果答案有帮助,请接受 (2认同)