📜  Python函数中的默认参数

📅  最后修改于: 2020-08-24 07:39:05             🧑  作者: Mango

Python中的函数用于实现要在代码的不同位置重复执行的逻辑。您可以通过函数参数将数据传递给这些函数。除了通过函数调用将参数传递给函数外,您还可以在Python函数中设置默认参数值。如果未将参数值显式传递给给定参数,则将这些默认值分配给函数参数。参数是实际传递给函数参数的值。

在本文中,您将看到如何在Python函数中使用默认参数。但是首先,我们将看到如何在Python中定义函数以及如何将值显式传递给函数参数。

不带参数的功能

让我们定义一个没有任何参数的非常简单的Python函数:

def my_function():
    print("This is a function without arguments")

上面的脚本定义了一个函数,my_function该函数不接受任何参数,仅输出一个字符串。

以下脚本显示了如何实际调用该my_function()函数:

my_function()

在输出中,您应该看到该my_function()函数在屏幕上打印了一个简单的语句:

This is a function without arguments

带有显式参数的函数

现在让我们定义一个简单的Python函数,在该函数中我们必须为函数参数传递多个值。如果未为所有函数参数指定值,则将看到错误。

这是我们将用作示例的函数:

def func_args(integer1, integer2):
    result = integer1 + integer2
    return result

在上面的代码中,我们创建了一个函数func_args(),带有两个参数integer1integer2。该函数将在两个参数中传递的值相加,并将结果返回给函数调用方。

让我们尝试使用两个参数调用上述函数:

result = func_args(10, 20)
print(result)

上面的脚本func_args()使用两个参数值(即10和20)调用该方法。在输出中,您应该看到这两个值的总和(即30)。

现在让我们尝试在func_args()不传递参数值的情况下调用方法:

result = func_args()
print(result)

在输出中,您应该看到以下错误:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
 in 
----> 1 result = func_args()
      2 print(result)

TypeError: func_args() missing 2 required positional arguments: 'integer1' and 'integer2'

错误非常明显,对的函数调用func_args()缺少2个必需的位置参数integer1integer2。该错误基本上告诉我们,我们需要通过函数调用传递integer1integer2参数的值。

现在让我们为其中一个参数传递一个值,看看会发生什么:

result = func_args(10)
print(result)

现在,在输出中,您应该再次看到以下错误:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
 in 
----> 1 result = func_args(10)
      2 print(result)

TypeError: func_args() missing 1 required positional argument: 'integer2'

这里的区别是,现在的错误告诉我们,这个数值的一个的位置参数,即integer2,缺少。这意味着,如果未设置任何默认参数值,则必须为所有函数参数显式传递值,否则将引发错误。

如果您希望函数在函数调用中带有或不带有参数值的情况下执行该怎么办?这是Python函数中默认参数起作用的地方。

具有默认参数的功能

Python函数中的默认参数是那些在没有从函数调用中将显式值传递给这些参数的情况下采用默认值的参数。让我们用一个默认参数定义一个函数。

def find_square(integer1=2):
    result = integer1 * integer1
    return result

上面的脚本定义了一个find_square()带有一个默认参数的函数,即integer1integer1参数的默认值设置为2。如果find_square()使用integer1参数的值调用方法,则find_square()函数将返回该值的平方。

否则,如果未为函数的integer1参数传递任何值find_square(),则会看到默认值即2将分配给integer1,并且该函数将返回2的平方即4。

我们首先调用find_square()参数值为10的方法:

result = find_square(10)
print(result)

输出:

100

当执行上面的脚本,该值10覆盖的2对自变量的默认值integer1的的find_square()功能和函数返回100,它是正方形的10。

现在,我们将调用find_square()不带任何argument1参数值的函数。在这种情况下,您将看到find_square()函数将返回4,因为在没有该find_square()函数值的情况下,默认值2将用作该find_square()函数的值,如下所示:

result = find_square()
print(result)

输出:

4

Python函数也可以具有多个默认参数。例如,在以下脚本中,函数将传递给参数的整数相加。如果没有任何整数值传递给该函数,则默认参数将分别采用值2和4,如下所示:

def add_ints(integer1=2, integer2=4):
    result = integer1 + integer2
    return result

我们首先调用add_ints()不带任何参数的函数:

result = add_ints()
print(result)

输出:

6

由于我们没有传递函数参数的任何值,因此默认参数值(即2和4)已加在一起。

现在让我们将两个自己的值传递给add_ints()函数:

result = add_ints(4, 8)
print(result)

输出:

12

如预期的那样,将4和8相加得出12。

Python函数可以同时具有正常(显式)参数和默认参数。让我们创建一个函数take_power()。函数的第一个参数是普通参数,第二个参数是默认参数,其值为2。该函数将第一个参数的值的结果返回第二个参数的值的幂。

def take_power(integer1, integer2=2):
    result = 1
    for i in range(integer2):
        result = result * integer1

    return result

我们首先只传递一个参数:

result = take_power(3)
print(result)

输出:

9

在上面的脚本中,将3作为值传递给函数的integer1参数take_power()。没有为默认参数提供值integer2。因此,将使用默认值2取3的幂,您将在输出中看到9。

现在,我们将两个值传递给该take_power()函数。

result = take_power(3, 4)
print(result)

在输出中,您将看到3升至第四次幂,即81。

重要的是要注意,带有默认参数的参数不能跟随没有默认参数的参数。以以下功能为例:

def take_power(integer1=2, integer2):
    result = 1
    for i in range(integer2):
        result = result * integer1

    return result

尝试调用此函数将导致错误,因为第一个参数具有默认值,但第二个参数没有:

result = take_power(3, 4)
print(result)

执行此代码将导致以下错误:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
 in 
----> 1 def take_power(integer1=3, integer2):
      2     result = 1

SyntaxError: non-default argument follows default argument