Python可变函数指的是可以修改函数内某些参数的值的函数。Python中的可变函数通常使用可变对象作为函数的默认参数,例如列表、字典等。由于列表和字典是可变对象,所以在函数内部修改它们的值会影响到函数外部该对象的值。
例如下面这个函数add_to_list
接收一个数字列表作为参数,并在函数内将数字10添加到该列表中:
def add_to_list(my_list):
my_list.append(10)
当我们调用这个函数时,它会将数字10添加到my_list
的末尾:
my_list = [1, 2, 3]
add_to_list(my_list)
print(my_list) #[1, 2, 3, 10]
由于在函数内部我们修改了my_list
的值,所以函数外部的my_list
也被改变了。
下面是使用Python可变函数的完整攻略:
1.定义可变函数
可变函数定义与普通函数一样,只不过在函数参数处需要使用可变对象作为默认参数。
例如下面这个函数add_to_list
接收一个数字列表作为参数,并在函数内将数字10添加到该列表中:
def add_to_list(my_list=[]):
my_list.append(10)
print(my_list)
注意到函数定义中的参数my_list=[]
就是默认参数,它使用了一个空列表作为默认值。
2.调用可变函数
调用可变函数时,我们可以不传入参数,此时默认参数就会被使用,也可以传入一个列表作为参数,函数会将数字10添加到该列表中。
例如,下面这个例子演示了在不传入参数的情况下,可变函数add_to_list
使用默认参数的值来修改列表:
add_to_list() #[10]
add_to_list() #[10, 10]
注意到我们调用了两次add_to_list()
,每次调用函数都会将数字10添加到默认参数列表中。
现在,我们来看下传递参数的例子:
my_list = [1, 2, 3]
add_to_list(my_list) #[1, 2, 3, 10]
print(my_list) #[1, 2, 3, 10]
这个例子跟我们之前介绍的例子一样,传入了一个列表作为函数的参数。函数内部将数字10添加到该列表中,并且此时函数外部的my_list
也被改变了。
总结
使用Python可变函数时需要注意,由于可变函数会修改其默认参数的值,因此如果参数修改了,那么下次调用这个函数时,将会使用最新修改后的参数值。因此,可变函数在使用时需要倍加小心,谨慎考虑参数的传递方式。