sympy.sympify()不执行替换

时间:2015-04-09 23:19:16

标签: python sympy

这可以按预期工作:

>>> from sympy import *
>>> (x, y, z) = symbols("x y z")
>>> y = x
>>> z = y
>>> z
x

sympify()不执行替换:

>>> from sympy import *
>>> y = sympify('x')
>>> z = sympify('y')
>>> z
y

z应设置为x

我可以传递给sympify()以取代它的任何标志吗?我使用的是sympy版本0.7.1.rc1和python 2.7.3

1 个答案:

答案 0 :(得分:1)

您误解了sympy符号与Python名称之间的区别。

>>> y = sympify('x')

在这里,您创建了一个名为x的符号y

>>> z = sympify('y')

现在,您创建一个名称为y的名称z。请注意,符号y和本地名称y之间没有任何关系。当您说sympify('y')时,Sympy并不关心您有一个名为y的变量 - 它不会检查您的本地命名空间。

你可能想要的是:

>>> z = sympify(y)

即。将z分配给 y指向的符号;这可以满足您的期望:

>>> z
x 

另请注意,sympify调用在这种情况下完全是多余的,您真的应该这样做:

>>> z = y