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 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录