对Python函数默认值参数的解释
时间: 2023-12-27 10:03:25 浏览: 90
在 Python 中,函数的默认值参数是指在定义函数时,可以为参数设置一个默认值,在函数调用时如果没有传入该参数,则会使用默认值。
函数默认值参数的语法格式如下:
```
def function_name(parameter1=default_value1, parameter2=default_value2, ...):
# function code
```
在上面的代码中,当我们调用函数时,可以不传递参数,此时函数会使用默认值,例如:
```
def greet(name="world"):
print("Hello, {}!".format(name))
greet() # 输出: Hello, world!
greet("John") # 输出: Hello, John!
```
在上面的例子中,函数 greet() 定义了一个名为 name 的参数,并且为其设置了默认值 "world"。当我们在调用 greet() 函数时,如果不传递参数,则使用默认值 "world";如果传递了参数,则使用传递的参数值。
需要注意的是,如果函数的默认值参数是可变的对象(如列表、字典等),那么在函数内部修改该对象的值,会影响到所有调用该函数时未传递该参数的地方。例如:
```
def append_item(item, lst=[]):
lst.append(item)
return lst
print(append_item(1)) # 输出: [1]
print(append_item(2)) # 输出: [1, 2]
```
在上面的例子中,函数 append_item() 定义了一个名为 lst 的参数,并且为其设置了默认值 []。当我们在第一次调用 append_item() 函数时,该函数会创建一个空列表,并将其作为默认值。然后,该函数会向该列表中添加一个元素 1,并返回该列表 [1]。在第二次调用 append_item() 函数时,由于 lst 参数的默认值已经被创建,因此该函数会使用第一次调用时创建的列表 [1]。然后,该函数会向该列表中添加一个元素 2,并返回该列表 [1, 2]。
因此,为了避免这种情况,我们可以将默认值设置为 None,并在函数内部判断参数是否为 None,如果是,则创建一个新的可变对象。例如:
```
def append_item(item, lst=None):
if lst is None:
lst = []
lst.append(item)
return lst
print(append_item(1)) # 输出: [1]
print(append_item(2)) # 输出: [2]
```
阅读全文