Reputation: 58791
To get all variables from a sympy expression, one can call .free_symbols
on the expression. I would like to retrieve all functions used in an expression. For example, from y
in
from sympy import *
f = Function('f')
g = Function('g')
x = Symbol('x')
y = f(x) + 2*g(x)
I'd like to get f
and g
.
Any hints?
Upvotes: 5
Views: 918
Reputation: 91490
For all functions, use atoms(Function)
.
In [40]: (f(x) + sin(x)).atoms(Function)
Out[40]: set([f(x), sin(x)])
For only undefined functions, use atoms(AppliedUndef)
.
In [41]: from sympy.core.function import AppliedUndef
In [42]: (f(x) + sin(x)).atoms(AppliedUndef)
Out[42]: set([f(x)])
Upvotes: 5
Reputation: 58791
atoms
does the trick:
for f in y.atoms(Function):
print(f.func)
Upvotes: 7