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

自定义SymPy函数生成平方形式LaTeX时触发TypeError错误求助

自定义SymPy函数LaTeX输出时TypeError问题分析

问题重现

自定义SymPy函数以实现特殊LaTeX输出,简化代码如下:

from sympy import Function, Symbol, latex

class TestClass(Function):
    def _latex(self, printer):
        m = self.args[0]
        _m = printer._print(m)
        return _m + '(x)'

S = Symbol('S')
latex(TestClass(S)**2)

执行代码时触发错误:

TypeError: TestClass._latex() got an unexpected keyword argument 'exp'

原因分析

SymPy在处理带有指数(如**2)这类修饰的表达式时,会向_latex方法传递额外的关键字参数(本例中为exp)。但你定义的_latex方法仅声明了printer一个参数,无法接收这些额外参数,因此抛出TypeError。

SymPy官方要求自定义函数的_latex方法需兼容任意关键字参数,以适配不同场景下的调用需求。

解决方法

修改_latex方法的签名,添加**kwargs参数以接收额外关键字参数:

from sympy import Function, Symbol, latex

class TestClass(Function):
    def _latex(self, printer, **kwargs):
        m = self.args[0]
        _m = printer._print(m)
        return _m + '(x)'

S = Symbol('S')
print(latex(TestClass(S)**2))  # 输出: \left(S(x)\right)^{2}

内容的提问来源于stack exchange,提问作者Michael Gfrerer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 15:12:07