栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

赋值语句左侧和右侧的星号*运算符

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

赋值语句左侧和右侧的星号*运算符

当还考虑了扩展包装的初始PEP时,将解释这两种情况之间的区别:

PEP 3132 -- Extended iterableunpacking

在该PEP的摘要中,我们可以看到:

该PEP提议对可迭代的解包语法进行更改,从而允许指定“全包”名称,该名称 将被分配 所有未分配给“常规”名称的项目 的列表

(强调我的)

因此,在第一种情况下 ,执行后:

*elements, = iterable

elements
总是将
list
包含内所有项目的
iterable

即使在两种情况下看起来都相似,

*
在这种情况下(左侧)也意味着:捕获未分配给名称的所有内容并将其分配给加星号的表达式。它的工作原理类似的方式作为
*args
**kwargs
在做的
函数定义

def spam(*args, **kwargs):     """ args and kwargs group positional and keywords respectively """

第二种情况(右侧)有些不同 。在这里,我们没有

*
像通常在 函数调用中
那样以“全部捕获”方式进行工作。它扩展了附加的可迭代对象的内容。因此,该语句:

elements = *iterable,

可以视为:

elements = 1, 2, 3, 4,

这是a

tuple
初始化的另一种方式。

请注意,

list
可以通过简单使用创建一个
elements =[*iterable]
,它将解压缩
iterable
in的内容
[]
并导致对form的赋值
elements = [1, 2, 3, 4]



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/639211.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号