如何在Python中实现多任务?

时间:2015-07-12 04:37:24

标签: python programming-languages language-design syntactic-sugar

我知道Python具有强大的多任务功能,例如。我们可以做到

a, b = 1, 2
a, (b, c) = 1, (2, 3)

甚至

for a, (b, c) in [(1, (2, 3)), ]:
    print a, b, c

但这是如何实施的?它是一种语法糖还是更复杂的东西?

2 个答案:

答案 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中比其他语言更强大。