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

Cha*_*ker 2 python sympy

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

isinstance(arg, symbol.Symbol)
Run Code Online (Sandbox Code Playgroud)

但我找不到怎么做:

isinstance(arg, sympy.Expression)
Run Code Online (Sandbox Code Playgroud)

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


作为快速检查,我做了:

expr2 = x-y
type(expr2)
<class 'sympy.core.add.Add'>
Run Code Online (Sandbox Code Playgroud)

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


能够检测变量何时属于任何类型的 sympy 相关事物,然后对其采取行动(然后可能稍后检查它是否是表达式或更详细的东西......)

DSM*_*DSM 5

我认为你只需要sympy.Expr而不是sympy.Expression

In [164]: expr2
Out[164]: x - y

In [165]: type(expr2)
Out[165]: sympy.core.add.Add
Run Code Online (Sandbox Code Playgroud)

但是如果我们看一下__bases__这种类型的:

In [166]: type(expr2).__bases__
Out[166]: (sympy.core.expr.Expr, sympy.core.operations.AssocOp)
Run Code Online (Sandbox Code Playgroud)

所以:

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
Run Code Online (Sandbox Code Playgroud)