python: 可选参数

python: optional arguments

我想获得一个像这样工作的函数:

operations(a, b) = a + b
operations(a, b, operation = 'subtraction') = a - b
operations(a, b, operation = 'multiplication') = a * b
operations(a, b, operation = 'division') = a / b

Operation 应该是一个可选参数,用于指定要执行的操作。默认情况下应该考虑加法运算。

我无法使用 *args 和 **kwargs 实现这一点,可能是因为我并没有真正了解它们的工作原理。

谢谢

编辑:抱歉,我犯了一个愚蠢的错误。还是谢谢了。

您只需为参数提供一个默认值。

def operations(a, b, operation='addition'):
    ...

*args 允许您在名为 args.

的单个元组中收集任意位置参数
def foo(*args):
    print(args)

>>> foo(1, 2)
(1, 2)

**kwargs 的工作原理相同,但对于关键字参数,将它们收集在 dict:

def foo(**kwargs):
    print(kwargs)

>>> foo(a=1, b=2)
{'a': 1, 'b': 2}

**kwargs 通常在您只需要将一组未知参数传递给另一个函数调用时使用。在您的示例中,您知道将使用名为 operation 的参数,因此您可以在参数列表中按名称指定它。


您还可以要求将其作为关键字参数传递,如下所示:

def operations(a, b, *, operation='addition'):
    ...

现在operations(a, b, 'subtraction')是非法的;它必须被称为 operations(a, b)operations(a, b, operation='subtraction').

您可以使用可选参数:

def operation(a, b, tp = "addition"):
    if tp == "subtraction":
        return a - b
    if tp == "division":
        return a / b
    if tp == "multiplication":
        return a * b
    return a + b

print(operation(10, 20) == 30)
print(operation(10, 20, "subtraction") == -10)