2017-04-14 11 views
1

python変数がsympy式であることを確認したかったのです。変数がsympy式であるかどうかをチェックするにはどうすればよいですか?

isinstance(arg, symbol.Symbol) 

が、私が何をどのように見つけることができません:

isinstance(arg, sympy.Expression) 

は、Pythonの変数はsympy式または保持しているかどうかを確認することが可能であるその場合とsympy変数を確認するために、その簡単変数?私は簡単なチェックとして


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

が、私は、文の句は数学の式のそれぞれの可能なタイプをチェックする場合は、巨大なシリーズを持っている必要はありません。冗長な/愚かなようだ。


それは変数がsympy関連のものの任意の型である場合に検出することができるし、それに基づいて行動しても素敵(後でその場合、式以上の詳細な何かを多分当時と確認...)です

答えて

3

私はあなたが単にsympy.Expr代わりのsympy.Expressionが必要だと思う:

:私たちは、このタイプの __bases__を見れば

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

In [165]: type(expr2) 
Out[165]: sympy.core.add.Add 

が、

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 
関連する問題