如果我解析包含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。
搜索sympy
为reserved
,我发现一个建议使用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