Python 函数默认参数和可变参数:详解及示例
Python 函数默认参数和可变参数:详解及示例
1. 默认参数
在 Python 函数中,我们可以使用默认参数,当函数调用时没有提供参数值时,会使用默认值。
例如,以下函数 demo 接受一个 newitem 参数和一个可选的 old_list 参数,默认情况下 old_list 为一个空列表。
def demo(newitem, old_list=[]):
old_list.append(newitem)
return old_list
print(demo('5', [1, 2, 3, 4])) # 输出 [1, 2, 3, 4, '5']
print(demo('aaa', ['a', 'b'])) # 输出 ['a', 'b', 'aaa']
print(demo('a')) # 输出 ['a']
print(demo('b')) # 输出 ['a', 'b']
解释:
- 当调用
demo('5', [1, 2, 3, 4])时,函数会将newitem设为 '5',old_list设为 [1, 2, 3, 4],然后将 '5' 添加到old_list中,并返回修改后的列表。 - 当调用
demo('aaa', ['a', 'b'])时,函数会将newitem设为 'aaa',old_list设为 ['a', 'b'],然后将 'aaa' 添加到old_list中,并返回修改后的列表。 - 当调用
demo('a')时,由于没有提供old_list参数,函数会使用默认的空列表[],然后将 'a' 添加到空列表中,并返回 ['a']。 - 当调用
demo('b')时,由于函数中的old_list是一个可变对象,并且在第一次调用demo('a')时被修改为 ['a'],所以再次调用demo('b')时,old_list仍然是 ['a'],函数会将 'b' 添加到 ['a'] 中,并返回 ['a', 'b']。
注意:
- 当默认参数是可变对象(如列表、字典等)时,如果在函数内部修改了默认参数的值,下次调用函数时会使用修改后的值,而不是默认值。为了避免这种情况,最好在函数内部使用
old_list = old_list[:]创建一个新列表,这样就不会修改默认参数的值。
2. 可变参数
在 Python 函数中,我们可以使用可变参数,它允许函数接受任意数量的参数。
例如,以下函数 average 接受任意多个数值参数,并返回它们的平均值。
def average(*args):
if len(args) == 0:
return 0
return sum(args) / len(args)
print(average(1, 2, 3, 4, 5)) # 输出 3.0
print(average(10, 20, 30)) # 输出 20.0
print(average()) # 输出 0
解释:
- 使用
*args表示可变参数,它会将所有传递给函数的参数作为一个元组存储在args中。 - 函数首先判断
args的长度是否为 0,如果是则返回 0,否则计算所有参数的总和并除以参数个数,得到平均值并返回。
总结:
- 使用默认参数可以为函数提供可选的参数,简化函数调用。
- 使用可变参数可以允许函数接受任意数量的参数,提高函数的灵活性和可扩展性。
- 在使用可变参数时,需要注意可变对象的修改问题,可以使用
[:]创建副本来避免修改默认参数的值。
希望本文能够帮助您理解 Python 函数默认参数和可变参数的使用方法。如果您有任何疑问,欢迎在评论区留言。
原文地址: https://www.cveoy.top/t/topic/nmqB 著作权归作者所有。请勿转载和采集!