我试图理解它是如何工作的,但我不能这样做。
>>> l = (1, 2, 3)
>>> a, b, c = l # a = 1; b = 2; c = 3
分配给变量的每个元素。但是如果数量解包变量不等于可迭代对象的大小,我们将捕获异常。
>>> l = ('first', 'second')
>>> a, b, c = l
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: need more than 2 values to unpack
当变量不够时发生同样的异常
>>> l = ('first', 'second', 3)
>>> a, b = l
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: too many values to unpack
但是如果我想创建函数来解压缩任何大小的可迭代对象,我可以这样做吗?像这样:
>>> l = ('first', 'second')
>>> a, b, c = unpacking(l) # a = 'first'; b = 'second'; c = None
如何在引擎盖下进行可迭代拆包?当迭代器停止?如何理解变量?如何定义必须返回多少个对象?