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

函数参数中的默认参数和可变参数

发布时间:2023-06-10 14:45:03

函数参数是Python语言的一个重要组成部分,函数定义时,我们可以设置默认参数和可变参数。这篇文章将介绍这两个参数的使用方法和注意事项。

1. 默认参数

在Python函数的定义中,我们可以为参数设置默认值,当函数被调用时,如果传入的参数没有指定值,则使用默认值。这个特性称为默认参数。

示例代码:

def greet(name, greet_word='Hello'):
    print(greet_word + ', ' + name)
 
greet('John')

输出:

Hello, John

在这个示例中,函数greet() 中第二个参数greet_word设置了默认参数Hello。当函数被调用时,如果没有传入greet_word参数,则使用默认值,输出"Hello, John"。

如果我们传入新的参数,那么会使用传入的参数覆盖默认参数:

greet('John', 'Hi')

输出:

Hi, John

注意:一定要把参数的默认值设为不可变对象,不然会陷入坑中。

2. 可变参数

有时候我们不能确定函数调用时需要传入多少个参数,这时我们可以使用可变参数,来将参数传递给函数。

在Python中,有两种形式的可变参数:

- *args:这种形式的定义方式将参数列表打包成一个Tuple。

- **kwargs:这种形式的定义方式将参数列表打包成一个Dict。

示例代码:

def sum(*args):
    result = 0
    for i in args:
        result += i
    return result
 
print(sum(1, 2, 3, 4, 5))

输出:

15

在这个示例中,函数sum() 定义中使用了*args,它将参数打包成一个元组,我们可以对它进行遍历,然后相加得到最终的结果。

再来看一个例子:

def greet(**kwargs):
    for key, value in kwargs.items():
        print(f"{key}={value}")
 
greet(name='John', age=25, gender='Male')

输出:

name=John
age=25
gender=Male

在这个示例中,函数greet() 中定义了**kwargs,它将参数列表打包成一个字典,我们可以通过遍历字典的方式,获取参数的键值对。

总结

- 默认参数使得函数定义更加简洁,使用默认参数时,记得将参数的默认值设为不可变对象。

- 可变参数使得函数更加灵活,我们可以处理不确定参数数量的函数调用。注意*args将可变参数打包成为tuple,**kwargs将可变参数打包成为dict。

- 在函数中同时使用默认参数和可变参数时,必须先使用默认参数,后使用可变参数。即def func(arg1, arg2=default_value, *args, **kwargs)。