matlab里的nargin函数,Python中的nargin函数(来自Matlab)

没有与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 myfunc(a=1, b=3, *args, **kwargs):

执行与前一个相同的操作,但是name提供的除a和b之外的任何参数都将进入kwargs(这是一个字典)。在

因此,您不需要nargin和nargchk,通常只需定义所需的参数并为可选参数设置默认值。然后Python将自动处理检查,以确保指定了所需的选项,并且没有提供太多的参数。如果您需要捕获任意数量的附加参数,只需使用*args和**kwargs,您可以自己检查len是否正确。在

对于nargout,没有python等价物,因为python要求处理所有输出。所以如果你做return a, b,在myfun,a,和{}都必须处理。您可以简单地忽略一些,但必须显式地这样做。没有简单的方法来检查这些参数是否被忽略。假设我们在myfunc中有这个:return a, b, c, d

您只需要a,您可以:a, *_ = myfunc()

这会将第一个返回值放入a,并将剩余值转储到丢弃变量_(就像*args捕获所有剩余参数,*_捕获所有剩余输出)。例如,a和{},您可以:a, _, c, _ = myfunc()

你也可以直接从函数调用中建立索引,这是MATLAB不允许的。所以这也是可能的。为了得到第一个论点,你可以:a = myfunc()[0]

因此,由于在Python中很容易获得所需的返回值,并且由于输出值的隐式变量数非常难以正确处理,因此Python不支持它。如果确实要更改输出参数的数目,可以在函数定义中设置可选的命名参数。由于可选参数在Python中很容易实现,所以这不是一个大问题。但通常不需要。在

至于错误,是的,您只是raise适当的异常。Python在不同的情况下有不同类型的错误。raise TypeError('blah')是处理错误参数数的正确方法,其中blah是您想要的消息。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值