Python函数中的参数类型以及默认参数
Python中的函数参数类型有四种:位置参数、默认参数、可变参数和关键字参数。
1. 位置参数
位置参数是指函数调用时根据参数在函数定义中的顺序进行传递的参数。例如:
def add(a, b):
return a + b
result = add(1, 2)
print(result) # 输出:3
在上面的代码中,a和b都是位置参数。当调用add(1, 2)时,1被传递给了a,2被传递给了b,函数返回了a + b即3。
2. 默认参数
默认参数是指在函数定义时就给参数赋一个默认值。如果调用函数时没有传递这个参数,则使用默认值。例如:
def add(a, b=10):
return a + b
result1 = add(5) # 没有传递b,使用默认值10
result2 = add(5, 6) # 已经传递了b,使用传递的值6
print(result1) # 输出:15
print(result2) # 输出:11
在上面的代码中,b就是一个默认参数,默认值为10。当调用add(5)函数时,没有传递b,所以使用默认值10。当调用add(5, 6)函数时,传递了b的值为6,所以使用传递的值6。
3. 可变参数
可变参数是指一个函数可以接收任意数量的位置参数。它们用星号*表示。例如:
def add(*args):
result = 0
for arg in args:
result += arg
return result
result1 = add(1, 2, 3)
result2 = add(1, 2, 3, 4)
print(result1) # 输出:6
print(result2) # 输出:10
在上面的代码中,args就是一个可变参数,它可以接收任意数量的参数。在函数内部,用循环把这些参数加起来,最后返回结果。
4. 关键字参数
关键字参数是指一个函数可以接收任意数量的关键字参数。它们用两个星号**表示。例如:
def print_info(**kwargs):
print(kwargs)
print_info(name='张三', age=20, sex='男')
# 输出:{'name': '张三', 'age': 20, 'sex': '男'}
在上面的代码中,kwargs就是一个关键字参数,它可以接收一个字典作为参数。在函数内部,直接打印这个字典。
除了位置参数和关键字参数外,Python还支持一种组合使用参数,它把关键字参数和可变参数合并为一个参数来使用。例如:
def print_info(*args, **kwargs):
print(args)
print(kwargs)
print_info(1, 2, 3, name='张三', age=20, sex='男')
# 输出:(1, 2, 3)
# {'name': '张三', 'age': 20, 'sex': '男'}
在上面的代码中,print_info函数接收了一些位置参数和一些关键字参数。它们分别被解析为args和kwargs两个参数。在函数内部,打印了args和kwargs两个参数。
对于默认参数,在多数情况下,我们都需要使用它。它可以为参数提供一个默认值,并在调用函数时省略这个参数。这就避免了一些不必要的错误,并增强了代码的可读性。例如,在编写一个统计页面访问量的功能时:
def count_views(page_name, views=0):
views += 1
print('【' + page_name + '】页面的访问量是' + str(views))
count_views('首页')
count_views('首页')
count_views('首页')
# 输出:
# 【首页】页面的访问量是1
# 【首页】页面的访问量是1
# 【首页】页面的访问量是1
在上面的代码中,count_views函数接收了一个page_name参数和一个views默认参数。views参数用于存储页面的访问量。views的默认值是0,所以它会在所有的调用中被重置。在函数内部,每当一个页面被访问时,views都会增加1,并打印出访问量。
所以,Python中的函数参数类型和默认参数都是十分实用的编程特性。无论是位置参数、默认参数、可变参数还是关键字参数,在合适的时候使用,都可以提高代码的可读性和可维护性。
