我正在寻找一种在Sympy表达式中查找功能参数的可靠方法。例如,在下面的示例中,如何从f
中检索operator
?
import sympy
x, y = sympy.symbols('x y')
f = sympy.Function('f')
operator = x*f(x, y).diff(x) + y*f(x, y)
print(operator.free_symbols)
# prints {x, y}
答案 0 :(得分:3)
方法expr.atoms(class)
返回expr
中作为该类实例的所有对象的集合。所以,
operator.atoms(sympy.Function)
将返回f(x, y)
。如果您想忽略该函数的参数,请使用
[a.func for a in operator.atoms(sympy.Function)]
(对于SymPy对象a
,a.func
是其“功能”部分,而a.args
是其“参数”部分。)
请注意,如果包含operator
,例如sin(x)
,那么上面的代码也将包含它。要仅返回未定义的 函数,请用sympy.Function
替换sympy.function.AppliedUndef
作为atoms
中的类选择器。