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

Python函数的可变参数和关键字参数的使用。

发布时间:2023-06-05 09:34:53

Python是一种非常灵活的编程语言,因其强大的标准库和各种框架,具有很好的拓展能力。在Python中,函数是一个非常重要的概念,函数可以帮助我们让代码更加模块化、易于维护和测试。

Python函数的可变参数和关键字参数是Python语言中的两个非常重要的特性,在实际的开发中,它们经常被用来处理一些可变的参数和关键字参数,这可以让函数更加灵活和易于使用。本文介绍了Python函数的可变参数和关键字参数的使用。

一、可变参数

Python中的可变参数是指在声明函数时并不知道需要传入多少个参数,可以用一个特殊语法 "*" 定义可变参数。这个语法可以让函数接受任意数量的参数,这些参数会被收集到一个元组中,并可以对这个元组进行操作。

1、定义可变参数

在Python中,定义可变参数只需要在函数的参数列表中使用 "*" 来表示,如下所示:

def demo(*args):
    print(args)

这个函数定义了一个可变参数args,这个args参数可以接受任意数量的参数。下面我们来看一下这个函数的使用:

demo(1, 2, 3) # (1, 2, 3)
demo('a', 'b', 'c') # ('a', 'b', 'c')
demo() # ()

在这个例子中,我们可以看到demo函数可以接受任意数量的参数,并且这些参数会被收集到一个元组中。

2、使用可变参数

当我们在使用Python中的可变参数时,需要注意以下几点:

(1) 如果函数中还有其他参数,那么可变参数要放在参数列表的最后。

def demo(msg, *args):
    print(msg, args)

(2) 可变参数可以和其他类型的参数一起使用。

def demo(name, age, *args):
    print(name, age, args)

(3) 可变参数一般和解包操作一起使用。解包操作是指使用 * 将序列中的元素解包成单独的元素。

def demo(*args):
    print(args)

def demo2(*args):
    demo(*args)

(4) 可变参数也可以在函数的返回值中使用。

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

print(demo(1, 2, 3)) # 6

3、实例

下面是一个使用可变参数的实例,我们通过可变参数来统计一个数列中的所有偶数和所有奇数的和:

def calc(*nums):
    even = 0
    odd = 0
    for i in nums:
        if i % 2 == 0:
            even += i
        else:
            odd += i
    return even, odd

print(calc(1, 2, 3, 4, 5, 6)) # (12, 9)

这个calc函数定义了一个可变参数nums,这个nums参数会接受任意数量的参数,然后使用循环来遍历这些参数,并判断它们是偶数还是奇数,最后返回两个值,分别是偶数和奇数的和。

二、关键字参数

Python中的关键字参数是指在调用函数时,可以给参数指定一个名称,这样我们可以让函数更加灵活地接收参数,并避免了参数的顺序问题。关键字参数的语法是用带两个星号 ** 的参数表示,它们会被收集成一个字典,其键为参数名,值为对应的数值。

1、定义关键字参数

在Python中,定义关键字参数采用两个星号 ** 来表示,如下所示:

def demo(**kwargs):
    print(kwargs)

这个函数定义了一个关键字参数kwargs,这个kwargs参数可以接受任意数量的关键字参数。下面我们来看一下这个函数的使用:

demo(name='Tom', age=20) # {'name': 'Tom', 'age': 20}
demo(sex='male', score=80) # {'sex': 'male', 'score': 80}
demo() # {}

在这个例子中,我们可以看到demo函数可以接受任意数量的关键字参数,并且这些参数会被收集到一个字典中。

2、使用关键字参数

当我们在使用Python中的关键字参数时,需要注意以下几点:

(1) 关键字参数可以和位置参数一起使用。

def demo(name, age=18, **kwargs):
    print(name, age, kwargs)

demo('Tom', sex='male', score=80) # Tom 18 {'sex': 'male', 'score': 80}

(2) 如果函数中还有其他参数,那么关键字参数要放在参数列表的最后。

def demo(name, age=18, **kwargs):
    print(name, age, kwargs)

def demo2(msg, *args, **kwargs):
    demo(*args, **kwargs)

(3) 关键字参数可以和可变参数一起使用。

def demo(*args, **kwargs):
    print(args, kwargs)

demo(1, 2, 3, name='Tom', age=18) # (1, 2, 3) {'name': 'Tom', 'age': 18}

(4) 关键字参数也可以在函数的返回值中使用。

def demo(**kwargs):
    return sum(kwargs.values())

print(demo(a=1, b=2, c=3)) # 6

3、实例

下面是一个使用关键字参数的实例,我们使用一个Python字典来记录一个人的信息,包括姓名、性别、年龄等等。我们可以使用关键字参数来传递这个字典,然后在函数中对这个字典进行操作。

def print_info(**info):
    print("Name: ", info.get('name'))
    print("Sex: ", info.get('sex'))
    print("Age: ", info.get('age'))
    print("Score: ", info.get('score'))

info = {'name': 'Tom', 'sex': 'male', 'age': 20, 'score': 80}

print_info(**info)

这个print_info函数定义了一个关键字参数info,这个info参数可以接受一个任意数量的关键字参数,也就是我们所定义的字典。最后我们将这个字典传递给函数,并对这个字典进行操作,输出其中的姓名、性别、年龄和分数。这个例子中,我们使用了双星号操作符 ** 来将这个字典传递给函数。