为什么arg的顺序对正确来说很重要?
防止这种情况的唯一方法是将符号设置为不可交换的(x = Symbol('x', commutative=False)
)。SymPy对象通过比较进行比较args
,因此x*y*z == y*x*z
要正常工作,必须对args进行规范排序。有一些尝试使此工作在不进行显式排序的情况下进行(主要是出于性能方面的考虑),但是请注意,即使我们这样做,也无法保证arg的顺序,特别是如果您对arg顺序执行任何类型的操作表达。函数在SymPy中重建表达式的情况非常普遍,通常会使用与原始文件不相关的其他顺序。