函数参数中的默认参数和可变参数
函数参数是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)。
