Python新手试图理解语法

时间:2011-08-25 21:10:43

标签: python

我是Python的新手,我正在尝试理解这种语法:

a, b = b, a + b

7 个答案:

答案 0 :(得分:2)

我们可以将其重写为:(a, b) = (b, a + b)

考虑a = 3b = 6

操作(b, a + b)返回一个tupple (6, 9),并将这些值分配给列出的变量(a, b)并指定(a = 6, b = 9)

因此最终值为a = 6b = 9

答案 1 :(得分:1)

Python能够一次传输多个值。这意味着“将a设置为b,将b设置为a和b的总和”。

有一个更全面的解释here

答案 2 :(得分:1)

a的值为b,b的值为a+b

可以找到更为技术性的解释here

答案 3 :(得分:1)

这是一个名为'unpacking'的python功能的语法糖。它实际上意味着:

(a, b) = (b, a + b) # This is also valid syntax

创建元组(b, a + b),锁定值。然后,将值分段分配给元组(a,b)中的标识符。由于值在分配开始之前被锁定,因此每个值都采用预期值。这个想法源自Haskell中的模式匹配。

答案 4 :(得分:1)

这称为序列解包。右侧包含在一个元组中(因为逗号)。然后Python包评估右侧,然后将这些值解包到左侧。

Tuples and Sequences

答案 5 :(得分:0)

这是一个tuple-decomposition(或序列解包)的作业,也可能被称为多重作业语句

RIGHT上的元组评估,然后将结果分配给LEFT上的变量。 (左侧不是真的一个元组,即使语法使它看起来像一个。)

所以,

a = 1
b = 2
a, b = b, a + b
// a, b = 2, 1 + 2 
// a, b = 2, 3
// a = 2
// b = 3

快乐的编码。

答案 6 :(得分:0)

它在一行代码中进行了两次初始化:

1. a = b
2. b = a + b

顺便说一句,可以将它用作python中的swap()函数。