Python-函数-可变长度参数

时间:2020-02-23 14:42:44  来源:igfitidea点击:

在本教程中,我们将学习Python中带有可变长度参数的函数。

在" Python-函数"教程中,我们了解了函数以及进行函数调用时如何将值传递给函数。

在下面的Python程序中,我们调用一个函数并传递两个整数值,然后它返回总和。

# func
def sum(x, y):
    return x + y

result = sum(10, 20)

print(result)    # 30

因此,上面的代码将输出30作为输出。

现在,假设我们想创建一个可以使用任意数量参数(例如2、3、4 ...)的sum函数。

上面的sum函数的问题是我们只能传递两个参数。

Python使我们能够创建可以接受多个参数的函数。
因此,让我们创建多参数函数。

创建具有可变长度参数的函数

以下是创建可以采用可变长度参数的函数的语法。

def func(*args):
  #
  # body of the function
  #

其中,func是函数的名称,* args具有可变长度的参数。

传递多个参数

在下面的Python程序中,我们将重新创建sum函数,但是这次我们将其修改为采用多个参数并打印它们。

# func
def sum(*args):
    print(type(args))
    print(args)

sum(10, 20)
sum(10, 20, 30)
sum(10, 20, 30, 40)

如果运行上面的代码,我们将获得以下输出。

<class 'tuple'>
(10, 20)
<class 'tuple'>
(10, 20, 30)
<class 'tuple'>
(10, 20, 30, 40

因此,我们可以看到args变量的类型为tuple,我们还可以打印所有作为元组传递给函数的值。

访问多个参数

由于传递给函数的多个参数是元组,因此我们可以使用for循环访问它们。

在下面的Python程序中,我们将输出单个参数。

# func
def sum(*args):
    for arg in args:
        print(arg)

print('sum(10, 20)')
sum(10, 20)
print('sum(10, 20, 30)')
sum(10, 20, 30)
print('sum(10, 20, 30, 40)')
sum(10, 20, 30, 40)

上面的代码将为我们提供以下输出。

sum(10, 20)
10
20
sum(10, 20, 30)
10
20
30
sum(10, 20, 30, 40)
10
20
30
40

因此,既然我们已经能够访问传递给函数的单个参数,让我们继续进行,并修改我们正在努力的" sum"函数,以向我们返回参数的总和。

多参数求和函数

# func
def sum(*args):
    result = 0

    for arg in args:
        result = result + arg

    return result

print(sum(10, 20))            # 30
print(sum(10, 20, 30))        # 60
print(sum(10, 20, 30, 40))    # 100

让我们向sum函数添加一些检查,以便仅添加数字参数。

# func
def sum(*args):
    result = 0

    for arg in args:
        if type(arg) in (int, float):
            result = result + arg

    return result

print(sum(10, 20.10, "hello"))            # 30.1