首页 > 后端开发 > Python教程 > 单星和双星运算符 (*) 和 () 如何处理 Python 函数定义中的变量参数?

单星和双星运算符 (*) 和 () 如何处理 Python 函数定义中的变量参数?

Linda Hamilton
发布: 2024-12-24 16:57:10
原创
777 人浏览过

How Do Single and Double Star Operators (*) and () Handle Variable Arguments in Python Function Definitions?

参数解包:函数定义中的 *

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' 将包含:

  • kind = 123
  • args = ('a ', 'b')
  • 酒吧 = None
  • kwargs = {'apple': 'red'}

解包参数列表

*:也可用于解包调用函数时的参数列表:

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板