Handle Python reserved words in a sympy parse_expr?



如果我解析包含lambda的表达式,即使Symbol("lambda")是有效的,我也会得到错误:

>>> sympy.Symbol("lambda")
lambda
>>> sympy.parse_expr("1 + lambda")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "xxx/lib/python3.7/site-packages/sympy/parsing/sympy_parser.py", line 1008, in parse_expr
return eval_expr(code, local_dict, global_dict)
File "xxx/lib/python3.7/site-packages/sympy/parsing/sympy_parser.py", line 903, in eval_expr
code, global_dict, local_dict)  # take local objects in preference
File "<string>", line 1
Integer (1 )+lambda
^
SyntaxError: invalid syntax
>>> sympy.parse_expr("1 + _lambda")
_lambda + 1

我希望允许我的代码的用户以他们喜欢的方式命名他们的变量。有办法支持这个吗?

如果没有,我可以用其他方法在保留字前面加一个下划线。

如果需要的话,我使用Sympy 1.6。

搜索sympyreserved,我发现一个建议使用lamda(没有'b')。https://docs.sympy.org/latest/tutorial/matrices.html?highlight=reserved

In [146]: lamda = symbols('lamda')
In [147]: from sympy.parsing.sympy_parser import standard_transformations
In [148]: parse_expr("1/2+lamda", transformations=standard_transformations)
Out[148]: λ + 1/2

最新更新