这可以按预期工作:
>>> 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
答案 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