首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python 3:解压列表的星号表达式

Python 3:解压列表的星号表达式
EN

Stack Overflow用户
提问于 2012-09-24 03:38:20
回答 2查看 46.7K关注 0票数 45

示例用法:

代码语言:javascript
复制
def f(a, b, c, d): 
    print(a, b, c, d, sep = '&')

f(1,2,3,4)
>>> 1&2&3&4

f(*[1, 2, 3, 4])
>>> 1&2&3&4

在python文档中的哪里解释了*

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-26 17:01:57

Expressions reference中记录了*args调用约定

如果语法*expression出现在函数调用中,则expression的计算结果必须为可迭代。此迭代器中的元素将被视为附加位置参数;如果存在位置参数x1,...,xN,并且expression计算结果为序列y1,...,yM,则相当于使用M+N位置参数x1,...,xN,y1,...,yM调用。

因此,由于您使用[1, 2, 3, 4]作为表达式,这是一个可迭代的表达式,并且没有其他位置参数,因此它被视为带有M=0和N=4的调用,总共有4个位置参数。

因此,您还可以将函数调用为f(1, 2, *[3, 4])或可迭代参数和位置参数的任何其他组合,前提是可迭代参数位于位置参数之后。

票数 50
EN

Stack Overflow用户

发布于 2021-03-25 23:15:54

只是简单地扩展未命名参数和命名参数的组合。

这是您要牢记的一般顺序:

代码语言:javascript
复制
def func(arg_1, ..., arg_N, *args, kwarg_1, ..., kwarg_M, **kwargs):
    # do stuff
    return True

其中,在大多数典型情况下;

  • args是一个未命名的参数,

  • kwargs是一个列表,因此是一组未命名的参数,

  • 每个kwarg_j是一个已命名的参数,

  • kwargs是一个字典,因此是一组已命名的参数。
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12555627

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档