可选参数函数

2024-05-12 16:09:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在研究如何在python中使用可选参数。 我读过this question,但我不清楚。 假设我有一个函数f,它可以接受1个或多个参数来理解时间序列。我有义务指定参数的数量并为每个参数设置默认值吗? 我的目标是能够以这种方式编写函数:

简单功能:

def f(x,y):
    return x + y
#f(1,2) returns 3

我想要的也是f(1,2,3)返回我6,f(7)返回我7

是否可以在不设置预定义数量的强制/可选参数的情况下编写它? 是否可以在不必将默认值设置为0的情况下编写它? 如何编写这个函数?

这是一个简单的数字示例,但是我需要编写的函数是比较一组连续的对象。比较完成后,数据集将输入神经网络。在

谢谢你的阅读。在

编辑: 我给函数提供的对象是这样的元组(float、float、float、bool、string)


Tags: 对象函数功能目标参数数量方式时间
3条回答

您可以在函数中放入^{},然后使用任意(非关键字)参数。*args是一个元组,因此可以像任何Python tuple/list/iterable一样对其进行迭代。即:

def f(*args):
    theSum = 0
    for arg in args:
        theSum += arg
    return theSum

print f(1,2,3,4)
def f(*args):
    """
        >>> f(1, 2)
        3

        >>> f(7)
        7

        >>> f(1, 2, 3)
        6

        >>> f(1, 2, 3, 4, 5, 6)
        21
    """
    return sum(args)

如果您需要执行比sum更复杂的操作,可以像这样在args上迭代:

^{pr2}$

有关more information on *args and **kwargs的信息,请参阅此问题

另请参阅Python教程中的以下部分:Arbitray Argument List

您可以使用以下语法:

def f(*args):
    return sum(args)

在^{之前的*告诉它“吞并”所有参数,使args成为一个元组。您也可以将此形式与标准参数混合使用,只要*args最后一个。例如:

^{pr2}$

第一个示例使用内置的sum函数来合计参数。sum取一个序列作为累加:

>>> sum([1,3,5])
9
>>> sum(range(100))
4950

args名称不是强制性的,但按惯例使用,因此最好坚持使用它。{cd8>还有未定义的参数。在

相关问题 更多 >