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

如何让Sympy的pprint输出时省略函数的自变量参数?

问题描述

当依赖多变量的函数输出内容较长时,SymPy默认以u(x, y, z, w)的形式打印会十分繁琐。现有如下SymPy代码:

from sympy import *

init_printing()
x, y, z, w = symbols('x y z w')
u = Function('u')(x, y, z, w)
f = u.diff(x)
pprint(f)

运行后输出:

∂                
──(u(x, y, z, w))
∂x

希望修改后仅输出简化形式:

∂                
──(u)
∂x
解决方案

以下是两种可行的实现方式:

方法一:自定义PrettyPrinter

继承SymPy的PrettyPrinter类,重写函数调用的打印逻辑,只保留函数名:

from sympy import *
from sympy.printing.pretty import PrettyPrinter

class SimplifiedFuncPrinter(PrettyPrinter):
    def _print_Function(self, expr):
        # 仅打印函数名称,不输出参数列表
        return self._print(Symbol(expr.func.__name__))

init_printing()
x, y, z, w = symbols('x y z w')
u = Function('u')(x, y, z, w)
f = u.diff(x)

# 使用自定义打印机输出
SimplifiedFuncPrinter().print(f)

执行后会输出目标简化格式。

方法二:临时替换为同名符号(快速方案)

如果只是临时需要简化打印,可将函数调用替换为同名符号,打印完成后再恢复原表达式:

from sympy import *

init_printing()
x, y, z, w = symbols('x y z w')
u_func = Function('u')(x, y, z, w)
u_sym = Symbol('u')

# 将表达式中的函数调用替换为符号
f_simplified = u_func.diff(x).subs(u_func, u_sym)
pprint(f_simplified)

该方法操作简单,但仅适用于无需后续对原函数表达式进行计算的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 09:33:21