###### 编程技术网

 用户名 Email 自动登录 找回密码 密码 立即注册

# 如何将eval()函数与变量列表一起使用?:How to use eval() function with a list of variables?

Khoth 集合 2022-5-11 10:30 7人围观

I have a list of functions as strings:

``["y + x + 3", "x**2 + y**2 - 17"] # 2 functions in list ``

I have a list of `Sympy Symbol` objects (basically variables) whos `.name` attribute cooresponds to the variables names in the function strings:

``[Symbol(x), Symbol(y)] # list element 0's .name attribute is "x" ``

I found that Python have a neat function called `eval()` which can evaluate strings, for example:

``x = 1 eval("x + 3") # Result should be 4 ``

Basically this is what I want to do with my functions strings. However, since this is a dynamic implementation I don't have variables defined on a line above `eval()` in my program, they are in a list instead. For example, in the example above x is defined as 1, so then the `eval()` function can use it.

But I have my variables in a list, not defined as a variable in the scope of my function. How could I use the `eval()` function and utilize my list of variables?

### 问题解答

` eval `将局部变量作为第三个参数(

`eval` takes local variables as third argument(reference), so you can do this:

``from sympy import Symbol zs = [Symbol('x'), Symbol('y')] eval('x+y', None, dict([z.name, z] for z in zs)) ``

However, maybe you should use parse_expr which is part of SymPy.

``from sympy import Symbol from sympy.parsing.sympy_parser import parse_expr zs = [Symbol('x'), Symbol('y')] parse_expr('x+y', local_dict=dict([z.name, z] for z in zs)) ``