我是Python的新手,我正在尝试理解这种语法:
a, b = b, a + b
答案 0 :(得分:2)
我们可以将其重写为:(a, b) = (b, a + b)
考虑a = 3
和b = 6
操作(b, a + b)
返回一个tupple (6, 9)
,并将这些值分配给列出的变量(a, b)
并指定(a = 6, b = 9)
。
因此最终值为a = 6
和b = 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包评估右侧,然后将这些值解包到左侧。
答案 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()
函数。