Python函数使用:如何设置默认参数
Python函数是我们可以重复使用的代码块。函数接受一些输入参数、进行一些操作,并返回一些结果。但是,有时我们希望函数的参数有默认值,这样,即使没有给函数传递参数,它也能工作。
在Python中,可以通过在函数定义中指定默认参数来设置默认值。当函数被调用时,如果调用者没有给出这个参数,那么就会使用默认值。可以使用如下方式定义带有默认参数的函数:
def func(arg1, arg2=default_value):
"""函数说明文档"""
# 函数体
在函数定义中,将参数名称与默认值用等号分隔开来,如arg2=default_value。这样,当调用函数时,参数arg2将默认使用默认值default_value。
为了提高代码的可读性和可维护性,您可以为带有默认参数的函数提供文档字符串。在函数的 行,以三个引号包含的文本字符串将被视为函数的说明文档。这个文档字符串应该解释函数的行为,并为函数的各个参数及其默认值提供说明,例如:
def greet(name, greeting='Hello, '):
"""
打招呼函数,name参数是打招呼对象的名称,
greeting参数是用来定制打招呼的问候语的,如果调用者不指定,
则会使用默认的问候语'Hello, '。
"""
print(greeting + name + '!')
在上面的示例中,我们定义了一个名为greet()的函数,它接受一个名为name的参数,以及一个名为greeting的默认参数。该函数的作用是向name打招呼,并使用greeting定制问候语。如果调用者不提供greeting参数,函数就会使用默认问候语Hello,。
你可以通过如下方式调用函数并手动传递参数:
greet('Tom') # 输出 "Hello, Tom!"
greet('Jack', 'Hi, ') # 输出 "Hi, Jack!"
我们可以看到,在第二个函数调用中,我们手动传递了greeting参数,它的值是'Hi, ' 。这个值覆盖了默认参数的值。因此,第二个函数调用输出 "Hi, Jack!"。
请注意,在给函数传递默认值时,请确保使用不可变类型(例如字符串、数字和元组)。如果默认值是可变的,那么每次调用函数时都会使用同一个默认值,并且如果修改了这个可变对象的值,那么这个改变将影响下一次使用该默认值的函数调用。例如,以下示例将使用默认参数:
def add_to_list(item, my_list=[]):
my_list.append(item)
return my_list
print(add_to_list(1)) # [1]
print(add_to_list(2)) # [1, 2]
print(add_to_list(3)) # [1, 2, 3]
在上面的示例中,我们定义了一个名为add_to_list()的函数,它接受两个参数:item和my_list(一个默认为空白的列表)。该函数的作用是将item添加到my_list中,并返回整个列表。
然而,在 次调用add_to_list()时,即使没有对my_list进行任何修改,它也有一个默认值。因此,它返回了一个带有一个元素的列表。在第二次调用add_to_list()时,它会使用上一次的my_list的值,并将2添加到该列表中。然后,第三次调用中的同样的列表被使用,3被添加到列表中。但是,实际上,三次调用应该返回三个不同的列表,因为每次调用都是独立的。
为了避免出现这种问题,我们可以使用不可变类型(例如None)作为默认值,并在函数中检查它是否被传递进来了,如果没有被传递进来,我们会手动将其设置为一个新的空白列表。
def add_to_list(item, my_list=None):
if my_list is None:
my_list = []
my_list.append(item)
return my_list
print(add_to_list(1)) # [1]
print(add_to_list(2)) # [2]
print(add_to_list(3)) # [3]
在上面的示例中,我们首先用None定义了默认值。然后,在函数中,如果my_list的值为None,我们会将其手动设置为一个新的空白列表。这样,每次调用函数时,我们都会得到一个新的列表,并在其中添加元素item。
最后,需要注意的是,在函数定义中,必须在所有默认参数之后列出非默认参数。也就是说,默认参数必须在参数列表的末尾。因此,如果您的函数有多个参数,有些默认,有些非默认,您必须先列出非默认参数,然后是默认参数。例如:
def my_function(arg1, arg2, arg3=default_value, arg4=default_value):
# 函数体
在上面的示例中,arg1和arg2是非默认参数,arg3和arg4是默认参数。
这是因为调用函数时,任何未提供默认值的参数必须按照定义的顺序传递,并且任何提供默认值的参数可以省略(但也必须按照定义的顺序)。
总结:
本文介绍了Python函数的默认参数。使用默认参数时,您可以为函数参数指定默认值。在未指定参数值的情况下,函数将使用默认值。在定义参数时,记得使用不可变类型(例如字符串、数字、元组)作为默认值,以保证每次调用函数时都是独立的。确认参数列表中,所有默认参数需位于最后。
