参数解包:函数定义中的 和 *
Python 中的函数定义可以利用 (星号) ) 和 * (双星)运算符来处理不同数量的
单星运算符 (*)
运算符(也称为“var-args”或“splat”)收集传递的所有位置参数将函数放入名为 args 的元组中。例如,在下面的定义中:
def foo(x, y, *args): pass
如果使用 foo(1, 2, 3, 4, 5) 调用 args,则 args 元组将包含 (3, 4, 5)。
双星运算符()**
运算符(也称为“var-kwargs”或“关键字 splat”)将所有关键字参数捕获为名为 kwargs** 的字典。在以下定义中:
def bar(x, y, **kwargs): pass
当用 bar(1, 2, name='Alice',age=30) 调用 bar 时,kwargs字典将包含 {'name': 'Alice', 'age': 30}.
混合标准参数和变量参数
函数定义可以使用 *:
def foo(kind, *args, bar=None, **kwargs): pass
调用时将普通参数与变量参数组合起来foo(123, 'a', 'b', apple='red'), 变量 'kind', 'args'、'bar' 和 'kwargs' 将包含:
解包参数列表
*:也可用于解包调用函数时的参数列表:
def foo(bar, lee): pass baz = [1, 2] foo(*baz) # Unpacks baz into [1, 2] for bar and lee
扩展可迭代解包 (Python 3)
在 Python 3 中,*l 可以用在赋值的左侧,将可迭代解包为多个变量:
first, *rest = [1, 2, 3, 4] # first = 1, rest = [2, 3, 4]
仅关键字参数 (Python 3)
Python 3 引入仅关键字参数,其中*之后:仅允许关键字参数:
def func(arg1, arg2, arg3, *, kwarg1, kwarg2): pass
以上是单星和双星运算符 (*) 和 () 如何处理 Python 函数定义中的变量参数?的详细内容。更多信息请关注PHP中文网其他相关文章!