欢迎访问宙启技术站
智能推送

【Python函数参数】-掌握Python函数中可变参数和关键字参数的使用方法

发布时间:2023-06-13 11:38:19

在Python中,函数参数分为位置参数和关键字参数。位置参数是指传递给函数的参数根据其在定义函数时的位置来匹配。而关键字参数则是指传递给函数的参数根据其名称来匹配。除了这两种参数之外,Python还提供了另外两种可变参数和关键字参数。

一、可变参数

可变参数是指在函数定义时未知参数个数的参数,使用可变参数可以方便地传递多个参数。在Python中,可以使用星号(*)来定义可变参数,例如:

def print_args(*args):

    for arg in args:

        print(arg)

这个函数中,*args表示可变参数,当调用print_args()函数时,可以传入任意个数的参数,如下所示:

print_args(1, 2, 3, 4)

print_args('a', 'b', 'c', 'd')

以上两行代码输出的结果如下:

1

2

3

4

a

b

c

d

那么在函数内部,我们如何使用这些可变参数呢?我们可以像使用普通参数一样使用可变参数。例如:

def sum(*args):

    result = 0

    for arg in args:

        result += arg

    return result

这个函数中,我们可以根据传入的参数个数计算它们的和。例如:

print(sum(1, 2, 3, 4, 5))

输出结果为15。可见,使用可变参数非常方便,它可以让我们使用任意个数的参数来调用函数。

二、关键字参数

关键字参数是指在函数调用时使用名称来匹配参数的一种方式。在Python中,使用双星号(**)定义关键字参数,例如:

def print_kwargs(**kwargs):

    for key, value in kwargs.items():

        print(key + ' = ' + str(value))

这个函数中,**kwargs表示关键字参数,当调用print_kwargs()函数时,可以传递任意个数的关键字参数,如下所示:

print_kwargs(a=1, b=2, c=3)

print_kwargs(name='jack', age=18, gender='male')

以上两行代码输出的结果如下:

a = 1

b = 2

c = 3

name = jack

age = 18

gender = male

关键字参数在函数中的作用和可变参数很相似,不过关键字参数允许我们在调用函数时指定参数的名称,这样可以使函数更加直观和易于理解。在函数内部,我们可以像使用字典一样使用关键字参数。例如:

def print_info(name, age, gender):

    print('name: ' + name)

    print('age: ' + str(age))

    print('gender: ' + gender)

在这个函数中,我们使用了三个位置参数,分别是name、age、gender。我们也可以将这些参数改成关键字参数,如下所示:

def print_info(**kwargs):

    print('name: ' + kwargs['name'])

    print('age: ' + str(kwargs['age']))

    print('gender: ' + kwargs['gender'])

这个函数中,我们使用了关键字参数来代替位置参数。当我们调用这个函数时,可以像这样传递参数:

print_info(name='jack', age=18, gender='male')

这么做可以让我们的代码更加易于理解和维护。

三、可变关键字参数

有时候,我们需要定义既可以使用位置参数,又可以使用关键字参数的函数。在Python中,使用单星号(*)和双星号(**)一起定义一个函数的可变关键字参数。例如:

def print_info(name, age, **kwargs):

    print('name: ' + name)

    print('age: ' + str(age))

    for key, value in kwargs.items():

        print(key + ' = ' + str(value))

这个函数中,我们使用了两个位置参数(name和age),同时也定义了可变关键字参数。当我们调用这个函数时,可以传递任意个数的关键字参数,如下所示:

print_info('jack', 18, gender='male', hobby=['reading', 'travel'])

这个调用语句输出的结果如下:

name: jack

age: 18

gender = male

hobby = ['reading', 'travel']

这样,我们就可以定义一个既可以使用位置参数,又可以使用关键字参数的函数。

总之,Python中的函数参数非常灵活,不仅可以使用位置参数和关键字参数,还可以使用可变参数和可变关键字参数。这些参数让我们能够更加方便地使用函数,让我们的代码更加简洁易懂。