【发布时间】:2021-02-03 15:22:03
【问题描述】:
如果我解析包含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。
【问题讨论】:
-
问题不在于
symbol,而在于通常看起来相同的 Python 变量。 Python 变量不能是保留字。在docs.sympy.org/latest/tutorial/gotchas.html 处阅读有关符号名称的块。并学习docs.sympy.org/latest/modules/parsing.html。它可能有参数可以让您控制从符号名称到全局字典中的变量的转换。 -
我发现的唯一评论是确认使用
lambda是一个语法错误:docs.sympy.org/latest/modules/… 但没有关于是否可以将"lambda"解析为符号的指导。
标签: python sympy python-exec