matlab NaN函数,matlab中nargin的用法示例
nargin和nargchk没有等价的,因为Python不需要。在Python中,可以直接在函数定义中定义可选参数。示例:def myfunc(a=1,b=3):
在这个示例中,它允许您将a和{}设置为您想要的任何值,但是如果您没有定义它们,它将使用您指定的默认值。因此,如果调用myfunc(),它会将a设置为1,将{}设置为3。如果调用myfunc(5 ),它会将a设置为5,将{}设置为3。也可以通过名字调用,比如myfunc(b=10),将a设置为1,{}设置为10。在
如果您希望参数是必需的,那么不要在函数定义中给它们赋值。因此,在下列情况下,A是必需的,{}是可选的:
^{pr2}$
如果您希望用户能够指定任意数量的参数,您可以使用*args(其中args可以是您想要的任何变量。所以这个:def myfunc(a=1,b=3,*args):
将第一个参数分配给a,将第二个参数分配给b,将其余参数分配给args。您还可以使用**kwargs(同样,kwargs可以是任何变量名)来定义参数。所以这个:def my func (a=1,b=3,* args,* * kwargs):
做的和上一个一样,但是除了A和B之外,name提供的任何参数都将进入kwargs(这是一个字典)。在
所以不需要nargin和nargchk,通常只需要定义需要的参数,为可选参数设置默认值即可。Python将自动进行检查,以确保指定了所需的选项,并且没有提供太多的参数。如果需要捕捉任意数量的附加参数,只需使用*args和**kwargs,就可以自己检查len是否正确。在
对于nargout,没有python的等价物,因为python要求处理所有的输出。所以如果你确实返回A,b,你必须在myfun,A和{}中处理它。您可以简单地忽略一些,但是您必须明确地这样做。没有简单的方法来检查这些参数是否被忽略。假设我们在myfunc中有这个:返回a,b,c,d
只需要一个,就可以:A,*_=myfunc()
这会将第一个返回值放入一个,并将剩余的值转储到discard变量_(就像*args捕获所有剩余的参数,而* _捕获所有剩余的输出一样)。比如A和{},可以:A,_,c,_=myfunc()
也可以直接从函数调用中构建索引,这是MATLAB所不允许的。所以也有可能。要获得第一个参数,您可以:a=myfunc()[0]
所以因为在Python中很容易得到需要的返回值,又因为输出值的隐式变量个数很难正确处理,所以Python不支持。如果您真的想改变输出参数的数量,您可以在函数定义中设置可选的命名参数。因为可选参数很容易在Python中实现,所以这不是一个大问题。但通常不需要。在
至于错误,是的,你只是提出了适当的异常。Python在不同的情况下有不同类型的错误。Raise TypeError(blah )是处理错误参数数量的正确方法,其中blah是您想要的消息。在
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。