0

如果我解析一个包含 的表达式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。

4

1 回答 1

0

搜索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
于 2021-02-04T03:28:37.757 回答