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
这按预期工作:
>>> 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