python学习-函数的参数

        在学习python的过程中,第一次接触函数的参数可能会有点懵,因为python所支持的函数参数种类很多也很强大,参数之间的名称也容易引起混淆。这就造成了初次接触时,难免记不住或者混淆这几个概念。为了加强记忆,特自己整理总结一下。

        函数的参数分为必选参数、默认参数、可变参数、关键字参数和命名关键字参数这几种。

        必选参数就是最常见的参数,定义一个变量名用来接收,如

def sum(a,b):
    sum = a + b
    return sum

        这里的变量a,b便是必选参数了。

        默认参数,就是当调用函数时,如果该参数未传值,那么就使用定义参数时的默认值,如

def sum(a,b,c=0):
    sum = a + b + c
    return sum

        这里的变量c就是个默认参数,其默认值为0,当调用sum函数时,如果没有传c这个参数,只给了两个参数,那么c就视为0。注意,如果一个函数有必选参数和默认参数,那么必选参数一定在默认参数之前。思考一下就知道其中缘由了,因为如果把默认参数放在必选参数前面,那么调用函数的时候,python如何对应赋值呢,一定是必选参数在前,这样如果只传了必选参数,那么后面的默认参数就使用默认值。

这时候如果有个需求,这个sum求和函数不固定传几个参数,只要求把所有的传参都加起来,那么无论定义几个参数,都是不合适的。为了达到其通用性,就需要用到可变参数,如

def sum(*a):
    for x in a:
        sum += x
    return sum

通过在参数前加上一个*星号,就标识了这个参数为可变参数,这时候a就变成了一个tuple元组,调用时可以传入一个list或者tuple。如果一个函数有必选参数、默认参数和可变参数,那么一定是必选参数在前,默认参数在中,可变参数在后。这里的原因也很简单,如果可变参数在前面,那么还有必要定义必选参数和默认参数吗。

在编程的过程中,有时候需要传入一个dict字典,根据字典的key来取相应的value去做一些操作,这时候就需要用到关键字参数,如

def info(**dict):
    print('学生的名字:%s,学号:%s'%(dict['name'],dict['no'] ))

在参数前加**两个星号,就代表了这个参数是一个关键字参数。如果一个函数有必选参数、默认参数、可变参数和关键字参数,那么前面的顺序不变,关键字参数在最后。其实可变参数和关键字参数的前后顺序无所谓,至于为什么python这样安排,我们后面再讲。

有时候,我们需要限制关键字参数中的key,相当于哪些是必须传的,这时候可能就需要在函数体内去判断这个key是否存在。为了简化操作,python提供了命名关键字参数,如

def info(*,name,no):
    print('学生的名字是%s,学号是%s'%(name,no))

通过在参数前加上*,(星号加逗号),就标志了后面的参数都是命名关键字参数。调用时,需要使用key=value这样的形式传参。如果前面已经有了一个可变参数,那么*,就可以省略。如果函数中有必选参数、默认参数、可变参数、关键字参数和命名关键字参数,那么前面顺序不变,明明关键字参数要在关键字参数之前,这个和必选参数、可变参数顺序的理由一致。这时候我们就知道为什么python要安排可变参数在关键字参数之前了,因为如果只有有可变参数和命名关键字参数,而没有关键字参数的话,就可以使用简化语法,不需要在命名关键字参数前加上*,了。

至此函数的参数类型讲解完毕,可以看到python是一种很强大的语言,为了简化代码,在写的时候提供了很多方便的功能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python Deep SVDD是一种深度学习的异常检测算法,它通过深度神经网络来识别异常数据。在使用Python Deep SVDD时,需要设置一些参数来控制算法的行为。 首先,我们需要设置网络的架构和超参数。例如,我们可以选择使用预训练的卷积神经网络或自定义的网络架构作为基础模型。还可以设置网络的层数、每层的神经元数量、激活函数、优化器、学习率等超参数。这些参数会影响网络的拟合能力和训练速度,需要根据具体问题进行调整。 其次,我们需要设置Deep SVDD算法的参数。第一个参数是表示异常样本在数据集中的比例,通常需要根据实际数据集来设定。如果异常样本占比较大,可以增加该参数以提高算法的鲁棒性。另外,我们还可以设置中心点的初始化方式,例如使用随机初始化或从正常样本中选择一个。 还有一个重要的参数是半径r的初始化方式。该半径决定了异常样本的边界范围。一种常用的初始化方式是设定一个较小的常数值,表示边界范围的先验知识。另外,我们也可以通过自适应的方式来学习这个半径参数,例如使用训练数据集中与中心点距离最大的样本来计算初始化值。 最后,我们还可以设置模型的训练参数,例如迭代次数、批量大小、早停策略等。这些参数会影响模型的训练速度和泛化能力。为了提高算法的效果,我们可以尝试不同的参数组合,并进行交叉验证来选择最佳组合。 总之,Python Deep SVDD算法需要设置一些参数来控制网络架构、超参数、异常样本比例、中心点初始化方式、半径初始化方式和模型训练参数等。这些参数的选择需要根据具体问题和数据集进行调整,以获得最佳的异常检测效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值