Sympy函数无参数打印需求:多函数场景下的通用解决方案
Sympy 隐藏函数参数打印 LaTeX 通用方案
快速单次调用方案
直接调用sympy.print_latex()时传入no_args=True参数,即可一次性隐藏所有函数的参数:
import sympy as sy theta, phi, zeta = sy.symbols('theta phi zeta') a = sy.Function("a") b = sy.Function("b") expr = a(theta, phi) * b(zeta, theta) # 隐藏参数输出LaTeX sy.print_latex(expr, no_args=True) # 输出结果:a \cdot b
全局通用方案(适配大量函数场景)
如果表达式包含数十个函数,不想每次调用都重复传参,可以自定义LaTeX打印机,实现全局默认隐藏函数参数:
import sympy as sy from sympy.printing.latex import LatexPrinter # 自定义打印机类,重写函数打印逻辑 class NoArgLatexPrinter(LatexPrinter): def _print_Function(self, expr): # 仅打印函数名称,忽略所有参数 return self._print(expr.func) # 封装成全局可用的打印函数 def print_latex_no_args(expr): return NoArgLatexPrinter().doprint(expr) # 测试示例 theta, phi, zeta = sy.symbols('theta phi zeta') a = sy.Function("a") b = sy.Function("b") expr = a(theta, phi) * b(zeta, theta) print(print_latex_no_args(expr)) # 输出结果:a \cdot b
扩展:部分函数保留参数
如果需要对特定函数例外(比如保留某些函数的参数),可以在_print_Function中添加判断逻辑:
class NoArgLatexPrinter(LatexPrinter): def _print_Function(self, expr): # 指定保留参数的函数名 keep_args_funcs = ['sin', 'cos'] if expr.func.__name__ in keep_args_funcs: # 按原逻辑打印带参数的函数 return super()._print_Function(expr) # 其余函数仅打印名称 return self._print(expr.func)
内容的提问来源于stack exchange,提问作者arkhose u
相关产品推荐
相关产品推荐

