我知道Python有一个强大的多赋值函数,例如:我们可以做
a, b = 1, 2
a, (b, c) = 1, (2, 3)
和
for a, (b, c) in [(1, (2, 3)), ]:
print a, b, c
但是这是如何实现的呢?它是语法糖还是更复杂的东西?
如果你想深入了解它的细节,它被称为'元组解包',但它实际上适用于右边的任何可迭代对象,只是赋值的变量数量必须与可迭代对象中的元素数量相匹配。我不会称它为任何东西的语法糖,因为它确实发生在运行时——它并没有以某种方式提前神奇地转换成一系列单独的赋值语句。
元组赋值,来自"如何像计算机科学家一样思考"
当我尝试学习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中的函数比其他语言更强大。