我想检查一个python变量是一个sympy表达式。很容易检查它是否是一个与之相关的变量:
isinstance(arg, symbol.Symbol)
但我无法找到该怎么做:
isinstance(arg, sympy.Expression)
是否可以检查python变量是否包含sympy表达式或变量?
作为我做的快速检查:
expr2 = x-y
type(expr2)
<class 'sympy.core.add.Add'>
但我不想让一个巨大的系列if语句子句检查每种可能的数学表达式。似乎多余/愚蠢。
能够检测变量何时与任何类型的症状有关,然后对其进行操作(然后可能稍后检查它的表达式或更详细的内容......)
答案 0 :(得分:3)
我认为您只需要sympy.Expr
而不是sympy.Expression
:
In [164]: expr2
Out[164]: x - y
In [165]: type(expr2)
Out[165]: sympy.core.add.Add
但如果我们查看此类型的__bases__
:
In [166]: type(expr2).__bases__
Out[166]: (sympy.core.expr.Expr, sympy.core.operations.AssocOp)
所以:
In [167]: isinstance(2, sympy.Expr)
Out[167]: False
In [168]: isinstance(x, sympy.Expr)
Out[168]: True
In [169]: isinstance(x-y, sympy.Expr)
Out[169]: True