如何检查变量是否为sympy表达式?

时间:2017-04-14 15:01:29

标签: python sympy

我想检查一个python变量是一个sympy表达式。很容易检查它是否是一个与之相关的变量:

isinstance(arg, symbol.Symbol)

但我无法找到该怎么做:

isinstance(arg, sympy.Expression)

是否可以检查python变量是否包含sympy表达式或变量?

作为我做的快速检查:

expr2 = x-y
type(expr2)
<class 'sympy.core.add.Add'>

但我不想让一个巨大的系列if语句子句检查每种可能的数学表达式。似乎多余/愚蠢。

能够检测变量何时与任何类型的症状有关,然后对其进行操作(然后可能稍后检查它的表达式或更详细的内容......)

1 个答案:

答案 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