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

Python中的函数参数默认值是什么?如何使用它们?

发布时间:2023-09-16 02:36:43

在Python中,函数参数的默认值是当调用函数时,如果没有传递该参数的值,函数将使用预定义的默认值。默认值在参数定义的时候以等号(=)后面的值指定。

下面是一个示例演示如何使用函数参数的默认值:

def greet(name="Alice"):
    print("Hello, " + name + "!")

greet("Bob")  # 输出: Hello, Bob!
greet()  # 输出: Hello, Alice!

在上面的例子中,定义了一个名为greet的函数,该函数有一个参数name,默认值为"Alice"。当调用函数时,如果提供了name的值,则使用提供的值,否则使用默认值。

如果函数有多个参数,并且希望为其中一些参数提供默认值,可以按照以下格式定义参数:

def func(param1, param2=default_value, param3=default_value):
    # 函数体

在定义函数时,可以将参数的默认值设置为任何可用的值,包括整数、浮点数、布尔值、字符串、对象等等。在函数调用时,可以根据需要分别提供参数值。如果传递了参数值,则使用传递的值,如果没有传递,则使用默认值。

还可以通过参数名来显式传递参数值,并仅为需要的参数提供值。这样可以跳过中间参数,直接为后面的参数提供值。

def add_numbers(a=0, b=0, c=0):
    return a + b + c

print(add_numbers(1, 2, 3))  # 输出: 6
print(add_numbers(1, 2))  # 输出: 3 
print(add_numbers(c=3))  # 输出: 3

在上面的例子中,定义了一个名为add_numbers的函数,该函数有三个参数a、b和c,默认值均为0。在调用函数时,可以根据需要提供参数值、传递指定的参数名字,或者跳过一些参数。

需要注意的是,默认参数值在函数定义时就被计算和存储了,而不是在每次调用函数时重新计算。这意味着如果默认参数值是可变的对象(如列表或字典),并且在函数中更改了该对象的值,那么这些更改将被所有后续函数调用共享。

def add_item(item, itemList=[]):
    itemList.append(item)
    return itemList

print(add_item('apple'))  # 输出: ['apple']
print(add_item('orange'))  # 输出: ['apple', 'orange']

在上面的例子中,定义了一个名为add_item的函数,该函数有两个参数item和itemList,默认值为一个空列表。在每次调用函数时,都会在列表中添加item并返回。但是,由于默认参数值只在函数定义时被计算一次,所以在 次调用函数时创建了一个默认列表,该列表将在后续调用中保持相同。这导致了函数返回的列表中包含了之前调用中添加的所有元素。

为了避免这个问题,可以将默认参数值设置为None,并在函数内部检查参数值是否为None,并在需要时创建新的列表。

def add_item(item, itemList=None):
    if itemList is None:
        itemList = []
    itemList.append(item)
    return itemList

print(add_item('apple'))  # 输出: ['apple']
print(add_item('orange'))  # 输出: ['orange']

在上面的例子中,如果传递了一个空列表作为参数,则使用该列表。否则,在函数内部创建一个新的空列表,并在每次调用函数时使用该列表。这样,每次调用函数时都会返回一个只包含当前调用的元素的新列表。