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)
我想获得一个像这样工作的函数:
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)