如何检查某些输入是否为sympy函数类型?

时间:2019-07-19 07:52:08

标签: python sympy

我刚刚开始学习sympy中的基本解析,对此几乎没有问题。

我要创建一个proc(),调用者将向它传递一个符号函数以及该函数的参数,每个参数均作为单独的参数。也就是说,我不想将proc称为proc( y(x) ),而是将其称为proc(y,x),我认为这样对我来说更容易检查其自变量。

接下来,在proc内部,想要在执行任何处理之前先验证第一个参数类型确实是sympy函数,第二个参数是sympy符号。

检查该参数是否是sympy函数而不是其他什么的正确方法是什么?这就是我尝试过的。创建了一个文件:

================
def process(y,x):
    if not isinstance(x, sympy.Symbol):
        raise Exception(x + " should be a sympy symbol")

    if not isinstance(y,sympy.UndefinedFunction): #this does not work
        raise Exception(y + " should be a sympy function")


import sympy
x   = sympy.symbols('x')
y   = sympy.Function('y')
process(y,x)
======================

但是没有sympy.UndefinedFunction。当我键入

type(y)
Out[18]: sympy.core.function.UndefinedFunction

但是

 isinstance(y,sympy.core.function.UndefinedFunction)

也不起作用。也许有更好的方法可以完成上述所有操作。基本上,我想确保proc的输入是正确的。

使用3.7(conda)

1 个答案:

答案 0 :(得分:1)

Button move_found = findViewById(R.id.btn_found); Button move_conc = findViewById(R.id.btn_conc); move_found.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(MakeupMenu.this, MakeupActivity.class); startActivity(intent); } }); move_conc.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(MakeupMenu.this, MakeupActivity.class); startActivity(intent); } }); 替换为sympy.UndefinedFunction

此外,sympy.function.UndefinedFunction函数中的xy的类型应该是字符串,否则在两种情况下都会出现Exception错误。

新代码:

unsupported operand type(s) for +: