sympy 替换所有分配的变量

sympy substitute all assigned variables

我声明一个变量,使用该变量定义一个表达式

from sympy import *
x = symbols ('x')
f = 2 * x 

然后然后给变量赋值

x = 42

如何用当前值替换表达式中的变量?出于显而易见的原因

f.subs (x, x) 

不起作用。我知道我可以使用不同的变量

xx  = 42
f.subs (x, xx)

但是...

没有人喜欢与他们的新女友的前任进行比较,但在 Matlab 中,您可以简单地编写 subs (f),这相当于没有任何参数的 SymPy 的 f.subs (),以替换所有中间分配的变量.

以上,

>>> f = x**2
>>> x = 42
>>> def update(e):
...     d = globals()
...     return e.xreplace({x: eval(x.name, d) for x in e.free_symbols})
>>> Eq(f, update(f))
x**2 = 1764