2017-04-14 1 views
1

python 변수가 sympy 표현식인지 확인하고 싶습니다.변수가 sympy 표현식인지 어떻게 확인합니까?

isinstance(arg, symbol.Symbol) 

하지만 내가 할 방법을 찾을 수 없습니다 :

isinstance(arg, sympy.Expression) 

는 파이썬 변수가 sympy 표현 또는를 보유하고 있는지 확인하는 것이 가능의 경우와 sympy 변수를 확인하기 쉬운 변하기 쉬운? 내가 한 빠른 검사로


:

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

하지만 문 절은 수학 식의 가능한 각 유형을 확인하는 경우 거대한 시리즈를 갖고 싶어하지 않습니다. 중복/어리석은 것 같습니다.


그것은 변수가 sympy 관련된 것은 모든 유형의 경우 감지 할 수 있어야하고, 다음에 행동도 좋은 (나중에 그 경우 표현식 또는 더 자세한 것을 아마 다음과 체크 ...) 것

답변

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 
관련 문제