欢迎访问宙启技术站
智能推送

Python函数中的默认参数是如何工作的

发布时间:2023-05-30 09:11:14

Python函数中的默认参数是一种让函数在调用时自动使用默认值的机制。这些默认值参数在定义函数时指定,它们会在函数被调用但未提供相应实参时使用。简单来说,Python函数默认参数允许函数使用一组默认的参数,在使用这些参数的同时让调用函数更加方便。

定义有默认参数的Python函数

Python函数定义中,默认参数是在参数列表中指定的。这些参数指定了函数使用的默认值。例如,下面的函数定义定义了一个名为print_greetings的函数,它使用一个默认参数name,表示该参数默认为“Guest”:

def print_greetings(name='Guest'):
    print("Hello,", name)

使用函数时可以传递一个实参:

print_greetings('John')

这将输出:

Hello, John

当函数被调用时,Python将会检查是否提供了实参。如果没有提供实参,它将使用默认参数的值。

当多个参数有默认值时,示例函数的定义可能会如下所示:

def print_greetings(name='Guest', greeting='Hello'):
    print(greeting + ", " + name)

在这种情况下,函数可以使用默认参数,在使用该默认参数的同时可以将调用简化为:

print_greetings()

这将输出:

Hello, Guest

或者,可以传递实参来覆盖默认值:

print_greetings('John', 'Morning')

这将输出:

Morning, John

如何使用默认参数?

默认参数可以为Python函数的使用者提供方便。在使用Python函数时,需要为参数指定一个值。在使用默认参数时,如果没有为参数指定值,Python会默认使用函数定义中的值。在某些情况下,这对于用户方便而言非常重要。

下面是一些使用默认参数的示例:

示例1

一个解析字符串并对其进行格式化的函数。该函数接受一个字符串作为输入,如果没有提供它,它将使用默认字符串“Hello, {name}”进行格式化:

def say_hello(name=""):
    if name:
        print(f"Hello, {name}")
    else:
        print("Hello, Guest")

say_hello()
say_hello('John')

输出:

Hello, Guest
Hello, John

示例2

为许多不同的条件设置默认参数。下面的函数接受一个布尔值作为其输入。它在答案为True时打印值,否则打印另一个值。如果没有传递参数值,该函数将使用默认值:

def is_positive(num, compare_to=0):
    if num > compare_to:
        print(f"{num} is positive")
    else:
        print(f"{num} is not positive")

is_positive(1)
is_positive(-1)

输出:

1 is positive
-1 is not positive

该函数采用两个参数:num和compare_to。如果在调用时未指定compare_to,则函数默认使用值0。

示例3

Python内置了一个sorted()函数,它用于按字母顺序按升序排列列表中的元素。然而,该函数允许您覆盖默认的排序规则。默认情况下,sorted按字母顺序对列表进行排序:

lst = ['aa', 'bb', 'AB', 'Ba']
print(sorted(lst))

这将输出:

['AB', 'Ba', 'aa', 'bb']

在这个例子中,AB和Ba是按字母顺序排列的。然而,有时候它们可能不是想要的顺序。

可以使用sorted的默认参数key函数来指定如何计算列表中的元素要排序的值。例如,下面的示例指定要按不区分大小写字母顺序对列表进行排序:

lst = ['aa', 'bb', 'AB', 'Ba']
print(sorted(lst, key=lambda s: s.lower()))

这将输出:

['aa', 'AB', 'Ba', 'bb']

快速了解Python函数中的默认参数

- Python函数默认参数允许函数在调用时自动使用默认值。

- 默认参数是在函数定义中指定的。如果未提供实参,则使用相关参数的默认值。

- 默认参数为Python函数的使用者提供方便,并使代码更加简洁。

- 默认参数通常应在函数定义中指定,以便在调用相关函数时使用,但也可以在调用时覆盖。

- 您可以使用默认参数来更好地掌握Python函数的表现和功能,并将其应用于现实世界的编程挑战。