You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SymPy表达式树头部检测方法咨询(含自定义函数场景)

检测SymPy表达式的头部

内置函数场景(如cos)

对于SymPy内置函数构成的表达式,可通过表达式对象的func属性获取函数实例,再通过__name__属性拿到函数名称:

from sympy import sympify

expr = sympify("cos(1-x)")
# 获取头部函数名
head_name = expr.func.__name__
print(head_name)  # 输出: cos

# 判断是否为cos
if head_name == "cos":
    print("该表达式的头部是cos")

原理:SymPy解析后的函数调用表达式,func属性指向构造它的内置函数对象,__name__则是该函数的字符串名称。

自定义函数场景(如somefunc)

自定义函数的检测逻辑和内置函数一致,只需确保SymPy能识别该函数,分两种情况:

1. 预先定义自定义函数

先通过Function类注册自定义函数,再解析表达式:

from sympy import sympify, Function

# 注册自定义函数
somefunc = Function("somefunc")
expr = sympify("somefunc(cos(x))")

head_name = expr.func.__name__
print(head_name)  # 输出: somefunc

if head_name == "somefunc":
    print("该表达式的头部是somefunc")

2. 直接解析未预先定义的自定义函数

如果未预先注册,SymPy会自动将其识别为UndefinedFunction类型,依然可以通过func.__name__获取名称:

from sympy import sympify

expr = sympify("somefunc(cos(x))")
head_name = expr.func.__name__
print(head_name)  # 输出: somefunc

额外提示

如果不确定表达式是否为函数调用,可以先判断类型:

from sympy import sympify, Function

expr = sympify("x + 1")
if isinstance(expr, Function):
    head_name = expr.func.__name__
else:
    print("该表达式不是函数调用形式")

内容的提问来源于stack exchange,提问作者Anton Makarov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 13:24:25