sympy.sympify() 不执行替换

sympy.sympify() does not perform substitutions

这按预期工作:

>>> 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

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

>>> y = sympify('x')

您在此处创建了一个符号 x,名称为 y

>>> z = sympify('y')

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

您可能想要的是:

>>> z = sympify(y)

即将 z 分配给 y 指向的 符号;这会让你得到你所期望的:

>>> z
x 

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

>>> z = y