Python 为什么用同名但符号名不同的变量替换表达式中的变量不起作用

Python 为什么用同名但符号名不同的变量替换表达式中的变量不起作用,python,sympy,substitution,Python,Sympy,Substitution,如何用函数的新定义替换函数中的变量 初始变量 import sympy as sy g, a, x = sy.symbols("g a x") g = 5*a*x 此时在解释器中输入g将打印: 5*a*x 现在我想用alpha替换打印的a。为什么 下面的方法不起作用吗 a = sy.symbols("alpha") g = g.subs(a,a) 我很清楚,我可以使用以下方法: import sympy as sy g, a, x = sy.symbols("g a x") g = 5*a*

如何用函数的新定义替换函数中的变量 初始变量

import sympy as sy
g, a, x = sy.symbols("g a x")
g = 5*a*x
此时在解释器中输入g将打印:
5*a*x

现在我想用alpha替换打印的a。为什么 下面的方法不起作用吗

a = sy.symbols("alpha")
g = g.subs(a,a)
我很清楚,我可以使用以下方法:

import sympy as sy
g, a, x = sy.symbols("g a x")
g = 5*a*x
alpha = sy.symbols("alpha")
g = g.subs(a,alpha)
但我想理解为什么前一种方法不起作用。通常我感兴趣的是指定的名称a=和符号中的字符串(“a”)是如何连接的。它们必须相同才能正常工作吗?

g=g.subs(a,a)
永远不能做任何事情,因为它正在用它自己替换一件东西

用别的东西代替
a

g.subs(a, sy.symbols('alpha'))
应该使用。Symphy docs中的相关主题是。一个简单的例子:

a = sy.symbols('a')
b = a + 3      # b is now a+3 
a = 5          # b is still a+3 and it will not become 8
在代码末尾,Python变量
a
与名为“a”的SymPy符号没有关系。变量为5;符号仍然是
symbol(“a”)
,并且将永远是,因为SymPy表达式是不可变的。代替
a=5
应该执行
b.subs(a,5)
来执行替换

我感兴趣的是指定的名称a=和符号中的字符串(“a”)是如何连接的


他们根本没有联系。使用Python变量
a
指向名为“a”的符号很方便,这是人们这样做的唯一原因。不幸的是,这种模式误导了他们,使他们认为,如果他们把
a
=一个新的东西,那将对
Symbol(“a”)
产生影响,但事实并非如此。唯一的效果是Python变量现在指向其他对象;包含
Symbol(“a”)
的表达式不受影响。

我不知道symphy,但这:
g=g.subs(a,a)
对我来说,是“sub-alpha加alpha”。好的观点。你知道如何替换首字母a吗?同样,我不知道symphy,但我想你应该指定
g.subs(a,a)的结果
到另一个变量。或者使用
g.subs(sy.symbols('a'),alpha)
与交换的顺序一起工作,
g=g.subs(a,sy.symbols('alpha'))
。感谢您的输入。在使用
g.subs(a,sy.symbols('alpha'))之后,您将如何替换g中的
alpha

没有对变量
alpha的引用,因此无法调用
g.subs(alpha,sy.symbols('something_other'))
。您可以将符号“alpha”称为
符号(“alpha”)