我对允许符号操作的 python 库感兴趣,其中符号和可以是任意类型的未知数。
这是我要编写的代码:
>>> myexpression = symbol("foo") == "bar"
>>> print myexpression
foo == "bar"
>>> print myexpression(foo="quux")
False
>>> myexpression.or_(True)
True
或者一些粗略的近似。它实际上甚至不需要那么聪明,我很高兴不得不调用很多额外的内省方法来获得类似上面的东西(例如,即使逻辑重言式没有直接简化)
我的第一直觉是看sympy,但似乎库强烈假设符号变量必须是数字;我想至少对序列和集合进行操作:
>>> myexpression = sympy.Eq(sympy.Symbol("foo"), 5)
>>> myexpression
foo == 5
>>> myexpression = sympy.Eq(sympy.Symbol("foo"), "bar")
Traceback (most recent call last):
...
sympy.core.sympify.SympifyError: SympifyError: 'bar'
有没有办法让 sympy 理解非数字变量,或者另一个可以做类似事情的库?