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

默认参数和可变参数:如何为函数传递默认值和变长参数

发布时间:2023-07-01 20:00:53

默认参数是在定义函数时,为某些参数指定一个默认值。当调用函数时,如果没有为这些参数提供值,函数将使用默认值。

在Python中,可以通过在函数定义中为参数指定初始值来为函数传递默认值。例如:

def greetings(name="stranger"):
    print("Hello, " + name + "!")

greetings()    # 输出:Hello, stranger!
greetings("Alice")    # 输出:Hello, Alice!

在上面的示例中,函数greetings具有一个名为name的参数,并且使用了一个默认值"stranger"。当函数调用时,如果没有提供name的值,将使用默认值"stranger"。

可变参数是指在函数定义中,允许接受任意数量的参数。在Python中,可以使用一个特殊语法来定义可变参数,即在形参前加上一个星号(*),这样函数就可以接受任意数量的实参。例如:

def sum_numbers(*numbers):
    total = 0
    for num in numbers:
        total += num
    return total

print(sum_numbers(1, 2, 3, 4, 5))    # 输出:15
print(sum_numbers(10, 20))    # 输出:30

在上面的示例中,函数sum_numbers接受任意数量的参数,并将它们相加。我们可以将任意数量的实参传递给函数,它们将以元组的形式存储在numbers变量中。

要同时使用默认参数和可变参数,只需在函数定义中将它们组合起来使用。例如:

def print_items(*items, separator=", "):
    print(separator.join(items))

print_items("apple", "banana", "orange")    # 输出:apple, banana, orange
print_items("apple", "banana", "orange", separator="-")    # 输出:apple-banana-orange

在上面的示例中,函数print_items接受任意数量的参数,并且还有一个名为separator的默认参数,默认值为", "。我们可以传递任意数量的参数,并在传递separator参数时覆盖默认值。

需要注意的是,在函数定义中,默认参数必须在可变参数之后。否则会导致语法错误。例如,以下函数定义是无效的:

# 无效的函数定义
def my_function(separator=", ", *items):
    pass

总结起来,使用默认参数可以在函数定义中为参数指定一个默认值,在调用函数时,如果没有为这些参数提供值,函数将使用默认值。而可变参数允许函数接受任意数量的参数,在函数定义中使用*来定义可变参数。默认参数和可变参数可以同时使用,只需将它们组合在一起使用,并确保默认参数位于可变参数之后。