Python 如何在不重写的情况下以符号形式打印函数?

Python 如何在不重写的情况下以符号形式打印函数?,python,printing,sympy,Python,Printing,Sympy,假设我们得到了这个函数: def f(x,y): return 2*x*y 并定义 y=1 x= sympy.Symbol'x' 有没有办法打印 print(f(y,x)) 2*1*x 除了打印(2+'*x')。。。etc?使用符号调用函数实际上应该计算为2*x,您可以简单地打印出来 答复会议: >>> import sympy >>> x = sympy.symbols("x") >>> x x >>> de

假设我们得到了这个函数:

def f(x,y):
    return 2*x*y
并定义

y=1
x= sympy.Symbol'x'
有没有办法打印

print(f(y,x))
2*1*x

除了打印(2+'*x')。。。etc?

使用符号调用函数实际上应该计算为2*x,您可以简单地打印出来

答复会议:

>>> import sympy
>>> x = sympy.symbols("x")
>>> x
x
>>> def f(x, y):
...     return 2*x*y
... 
>>> f(x, 1)
2*x
>>> print(f(x, 1))
2*x

用符号调用函数实际上应该计算为2*x,您可以简单地打印出来

答复会议:

>>> import sympy
>>> x = sympy.symbols("x")
>>> x
x
>>> def f(x, y):
...     return 2*x*y
... 
>>> f(x, 1)
2*x
>>> print(f(x, 1))
2*x

@ncica你的意思是返回f“2*x*{y}”;)但我怀疑OP想要的是相同的,只是语法不同;)@SV-97@ncica我知道,但这是一种新的更有效的语法:DYeah,这是一种简单的函数形式。它可能是一个函数的10个系列。所以我想要一个更紧凑的solution@ncica你的意思是返回f“2*x*{y}”;)但我怀疑OP想要的是相同的,只是语法不同;)@SV-97@ncica我知道,但这是一种新的更有效的语法:DYeah,这是一种简单的函数形式。它可能是一个函数的10个系列。因此,我想要一个更简洁的解决方案我得到了错误“TypeError:unsupported Operator type for*:“int”和“function”的代码:
def(xx,yy):return 2*x*y,yy=1.0xx=symphy.Symbol('x'),print(f(xx,yy))
@Bill诚实地说:请格式化您的代码-它对我来说很好-如果这
def(xx,yy),请参阅我的答案的编辑:return 2*x*y
是您的完整函数:您没有在函数的作用域中声明x和y,也没有使用您定义的参数。也许你把x或y对外声明为function和int?将解释您要添加的错误消息(尽管它更像是一个headup,并且只是半相关):您可以将sympy符号声明为real(
sp.Symbol(“x”,real=True)
)。在忽略此项时,我经常遇到公式中未解析运算的错误。我得到代码的错误“TypeError:不支持的操作数类型*:'int'和'function'”:
def(xx,yy):返回2*x*y,yy=1.0 xx=sympy.Symbol('x'),print(f(xx,yy))
@Bill坦白地说:请格式化您的代码-它对我来说很好-请参阅我的回答编辑如果此
定义f(xx,yy):return 2*x*y
是您的完整函数:您没有在函数范围内声明x和y,也没有使用您定义的参数。也许你把x或y对外声明为function和int?将解释您要添加的错误消息(尽管它更像是一个headup,并且只是半相关):您可以将sympy符号声明为real(
sp.Symbol(“x”,real=True)
)。忽略此项时,我经常遇到公式中未解析运算的错误。