Python 3 高级拆箱

发布于 2021-04-19 12:06:21 字数 1030 浏览 1333 评论 0

Python 2 中可以以这样的方式进行拆箱操作:

>>> a, b = range(2)
>>> a
0
>>> b
1

你可以把序列中多个多个元素赋值给多个变量名,不过在 Python2 中必须满足变量名的个数与序列中的元素的个数是相等的,否则会报错。 然而,在 Python3 中你可以这样:

>>> a, b, *rest = range(10)
>>> a
0
>>> b
1
>>> rest
[2, 3, 4, 5, 6, 7, 8, 9]

拆箱时,可以仅仅指定有限个变量名,而剩下的元素可以放在一个列表中。 而且,rest变量可以放在任何位置:

>>> a, *rest, b = range(10)
>>> a
0
>>> b
9
>>> rest
[1, 2, 3, 4, 5, 6, 7, 8]

>>> *rest, b = range(10)
>>> rest
[0, 1, 2, 3, 4, 5, 6, 7, 8]
>>> b
9

实用场景1:获取文件的首尾行:

>>> with open("using_python_to_profit") as f:
...     first, *_, last = f.readlines()
>>> first
'Step 1: Use Python 3\n'
>>> last
'Step 10: Profit!\n'

实用场景2:重构函数:

#重构前
def f(a, b, *args):
stuff
# 重构后
def f(*args):
    a, b, *args = args
    stuff

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

0 文章
0 评论
84961 人气
更多

推荐作者

已经忘了多久

文章 0 评论 0

15867725375

文章 0 评论 0

LonelySnow

文章 0 评论 0

走过海棠暮

文章 0 评论 0

轻许诺言

文章 0 评论 0

信馬由缰

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文