Sympy:从表达式获取函数

Nic*_*mer 4 python sympy

要从sympy表达式中获取所有变量,可以调用.free_symbols该表达式。我想检索表达式中使用的所有函数。例如,从y

from sympy import *

f = Function('f')
g = Function('g')

x = Symbol('x')

y = f(x) + 2*g(x)
Run Code Online (Sandbox Code Playgroud)

我想得到fg

有什么提示吗?

Nic*_*mer 5

atoms 绝招:

for f in y.atoms(Function):
    print(f.func)
Run Code Online (Sandbox Code Playgroud)


asm*_*rer 5

对于所有函数,请使用atoms(Function).

In [40]: (f(x) + sin(x)).atoms(Function)
Out[40]: set([f(x), sin(x)])
Run Code Online (Sandbox Code Playgroud)

仅对于未定义的函数,使用atoms(AppliedUndef).

In [41]: from sympy.core.function import AppliedUndef

In [42]: (f(x) + sin(x)).atoms(AppliedUndef)
Out[42]: set([f(x)])
Run Code Online (Sandbox Code Playgroud)