python unpack_Python 3-unpack泛化

Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发。

Python 3.5增加了对PEP 448中unpack泛化的更多支持。根据PEP,它增加了* 序列unpack运算符的扩展用法和**字典unpack运算符,以允许在更多位置,任意次数和在其他情况下unpack。这意味着我们现在可以调用具有任意数量的unpack函数。让我们来看看一个dict()例子:

有趣的是,如果key不是字符串,unpack不工作:

更新:我的一个读者很快指出,这不起作用的原因是因为我试图unpack成一个函数调用(即dict())。如果我使用只是dict语法解压缩,整数键将工作正常。我的意思表达如下:

另一个有趣的变化是dict unpack后面的值将永远覆盖先前的。在PEP中有一个很好的例子,证明了这一点:

我认为这是很整洁。你可以使用ChainMap从collections模块做同样的事情,但这种方法更加简单一点。

然而,这个新的unpack也适用于元组和列表。让我们尝试将不同类型的一些项目组合成一个列表:

在这次unpack更新之前,你需要这样做:

我认为在这些情况下新的语法实际上是非常方便的。我实际上在Python 2遇到了这种情况一两次,这个新增功能将是非常有用的。

总结

在PEP 448中有很多其他的例子,在Python的解释器中阅读和尝试是非常有趣的。 我强烈建议看看它,并且试一试。 我希望当我们最终迁移到Python 3时在我的新代码中开始使用这些功能。英文原文:http://www.blog.pythonlibrary.org/2017/02/21/python-3-unpacking-generalizations/

译者:shizhaou

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值