您的位置:

Python函数的默认参数

一、默认参数是什么?

参数是函数接受的输入值。在Python函数中,有时候我们需要为参数提供默认值,这些参数就是默认参数。在函数定义时,我们可以为参数设置默认值,当调用函数时如果没有给这些参数赋值,就使用默认值。

下面是默认参数的定义方式:

def funcName(a,b=0,c=1):
    #代码部分

在以上代码中,b的默认值为0,c的默认值为1。如果在调用函数时不指定b和c的值,则会使用它们的默认值。

二、默认参数的用途是什么?

默认参数有许多用途,下面我们来介绍一些:

1、简化函数调用

对于那些以相同的参数值调用的函数调用,使用默认参数值可以简化代码。

# 不使用默认参数的代码
def greet(name, msg):
    print("Hello", name + ', ' + msg)
    
greet('John', 'Good morning!')
greet('Kate', 'Good morning!')
greet('Tom', 'Good morning!')

# 使用默认参数的代码
def greet(name, msg='Good morning!'):
    print("Hello", name + ', ' + msg)
    
greet('John')
greet('Kate')
greet('Tom')

2、使函数更加灵活

使用默认参数可以使函数能够处理更多情况。

# 不使用默认参数的代码
def add_numbers(x, y, z=None):
    if z:
        return x + y + z
    else:
        return x + y

result = add_numbers(2, 3)
# result = 5
result = add_numbers(2, 3, 4)
# result = 9

# 使用默认参数的代码
def add_numbers(x, y, z=0):
    return x + y + z

result = add_numbers(2, 3)
# result = 5
result = add_numbers(2, 3, 4)
# result = 9

三、需要注意什么?

使用默认参数需要注意以下几点:

1、默认参数只能放在参数列表的末尾

当定义函数时,参数列表中有默认参数时,这些参数只能放在参数列表的末尾。这样做是因为Python解释器是按照参数的位置来对参数进行传递的。

# 报错的代码
def funcName(a=0,b,c=1):
    #代码部分

# 正确的代码
def funcName(a,b=0,c=1):
    #代码部分

2、默认参数只会在函数定义时被赋值一次

Python中的函数默认参数在函数定义时就被赋值了。因此,如果默认参数是可变的对象(如一个列表或字典),那么这个对象在多次函数调用之间是可变的。

# 很可能会出现意外结果的代码
def funcName(a,b=[]):
    b.append(a)
    return b

print(funcName(1))
# 输出[1]

print(funcName(2))
# 输出[1,2]

print(funcName(3))
# 输出[1,2,3]

# 正确的代码
def funcName(a,b=None):
    if b is None:
        b=[]
    b.append(a)
    return b

print(funcName(1))
# 输出[1]

print(funcName(2))
# 输出[2]

print(funcName(3))
# 输出[3]

四、总结

默认参数可以使函数调用更加简单方便,使函数更加灵活。需要注意的是,使用默认参数有一些需要注意的问题。