Python 在sympy表达式中查找函数

Python 在sympy表达式中查找函数,python,sympy,Python,Sympy,我正在寻找一种在symphy表达式中查找函数参数的健壮方法。例如,在下面的示例中,如何从操作符检索f 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} 方法expr.atoms(class)返回expr中属于该类实例的所有对象的集合。所以 o

我正在寻找一种在symphy表达式中查找函数参数的健壮方法。例如,在下面的示例中,如何从
操作符
检索
f

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}

方法
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
是其“参数”部分。)

请注意,如果包含
运算符
,例如,
sin(x)
,则上述代码也会包含该运算符。若要仅返回未定义(非内置)函数,请将
symphy.Function
替换为
symphy.Function.AppliedUndef
,作为原子中的类选择器