在函数内部使用 eval() 并将函数的输入作为字符串的一部分

问题描述 投票:0回答:1

我有这个代码:

def system(into):
    global sys
    x = into
    sis = [eval(i) for i in sys]
    return sis

if __name__ == "__main__":
    sys = ['x[0]+x[1]','2*x[0]-3*x[1]']

当我执行带有输入的 system() 函数时,我希望能够评估这个方程组。但我收到此错误:NameError:名称“x”未定义。

我该如何解决这个问题?

python eval global
1个回答
0
投票

您可以在 eval 函数中显式传递 x 值列表。另外,不要使用

sys
来命名变量,sys 是内置的 python 模块。除非您显式导入该包,否则它不会导致问题,但这不是一个好的做法。

以下是更正后的代码。

def system(into):
    global sys
    x = into
    sis = [eval(i, {'x': x}) for i in sys] ## pass explicitly 
    return sis

if __name__ == "__main__":
     sys = ['x[0]+x[1]', '2*x[0]-3*x[1]']
© www.soinside.com 2019 - 2024. All rights reserved.