我知道Python具有强大的多任务功能,例如。我们可以做到
a, b = 1, 2
a, (b, c) = 1, (2, 3)
甚至
for a, (b, c) in [(1, (2, 3)), ]:
print a, b, c
但这是如何实施的?它是一种语法糖还是更复杂的东西?
答案 0 :(得分:1)
如果你想挖掘它的细节,它被称为'元组解包',但它实际上适用于右侧的任何迭代,其约束条件是赋值的变量数必须与元素数相匹配在可迭代中。我不会把它称为语法糖,因为它确实在运行时发生 - 它不会以某种方式神奇地转化为一系列单独的赋值语句。
答案 1 :(得分:0)
Tuple Assignment from "how to think like a computer scientist"
当我尝试学习python时,这对我很有帮助,它解释了关于元组赋值以及如何将其视为打包/解包(不必是元组,只要在左侧)是可分配的,在右边是可迭代的)
list = [0]*3
[list[0],list[1],list[2]] = {1:1,2:2,3:3}
list is now "[1,2,3]"
你可能已经知道这一点,但只是为了完成它, 元组赋值也适用于函数:
a,b,c = function_return_a_three_tuple()
因此python中的函数看起来可能会返回多个值,但它是一个错误的声明,它们只返回一个元组,元组赋值使它看起来像函数在python中比其他语言更强大。