Python函数中的默认参数是什么?
Python函数中的默认参数是指在函数定义时给参数设置的默认值。当调用函数时,如果没有给这个参数传入实参,那么函数就会使用默认值作为参数的值。
在Python中,我们可以在函数定义时通过给参数赋值来设置默认参数。例如:
def greet(name, age=18):
print("Hello, my name is", name)
print("I am", age, "years old")
在上面的例子中,age=18 就是一个默认参数,它的默认值是18。当函数 greet 被调用时,如果没有给参数 age 传入实参,那么它就会使用默认值18。如果给 age 传入实参,则会使用传入的实参的值。
函数的默认参数有以下特征:
1. 默认参数必须在非默认参数之后定义。这是因为在调用函数时,实参的传递是按照位置的顺序进行的,有了默认参数后,可能会导致函数调用时的参数位置不清晰。
2. 默认参数的值只在函数定义时赋值一次,而不是每次函数调用时赋值。
3. 如果默认参数是可变对象(如列表、字典、集合等),那么在函数调用时,如果修改了这个默认参数的值,那么下次调用函数时会受到上次修改的影响。
下面是关于默认参数的一些使用示例:
# 示例1:使用默认值
def greet(name, age=18):
print("Hello, my name is", name)
print("I am", age, "years old")
greet("Alice") # 输出:Hello, my name is Alice;I am 18 years old
greet("Bob", 20) # 输出:Hello, my name is Bob;I am 20 years old
# 示例2:修改默认参数的值
def add_number(numbers=[]):
numbers.append(1)
print(numbers)
add_number() # 输出:[1]
add_number() # 输出:[1, 1]
add_number() # 输出:[1, 1, 1]
# 示例3:默认参数是不可变对象
def add(a, b=2):
return a + b
result = add(2)
print(result) # 输出:4
在 示例1 中,函数 greet 的参数 age 拥有默认值18。所以当调用 greet("Alice") 时,age 没有传入实参,使用了默认值18。而在调用 greet("Bob", 20) 时,age 被传入实参20,所以使用了传入的实参值。
在 示例2 中,函数 add_number 的参数 numbers 是一个列表,默认值是空列表。每次调用 add_number 时,向 numbers 中添加一个元素1,并打印出 numbers。可以看到,当多次调用 add_number 时,之前修改过的默认参数 numbers 的值会保留下来,而不会每次调用都重新使用默认值。
在 示例3 中,函数 add 的参数 b 拥有默认值2。当调用 add(2) 时,只传入了一个实参,参数 b 使用了默认值2。所以函数返回2 + 2 = 4。
通过使用默认参数,可以使函数的调用更加灵活和简洁,在不同的场景下可以根据需要传入不同的实参值。
