回答
,我们可以把这个给:(a, b) = (b, a + b)
考虑到a = 3
和b = 6
(b, a + b)
返回一个元组(6, 9)
这些值分配给列出的变量(a, b)
,并指定(a = 6, b = 9)
操作。
所以最终值是a = 6
和b = 9
。
Python有一次传输多个值的能力。这意味着“将a设为b,将b设为a和b的和”。
有一个更全面的解释here。
链接已经死了,你的意思是不同的页面可能吗? –
@ShadowWizard没有。我的意思是,当我写它。不幸的是,该链接已经移动,但你仍然可以通过wayback机器找到它:http://web.archive.org/web/20100419171004/http://diveintopython.org/getting_to_know_python/multiple_values.html – cwallenpoole
奇怪的是,所有其他链接在新域中仍然存在 –
a
给出的b
和b的值被给予更多的技术说明可发现here
a+b
A的值,是与tuple-decomposition(或序列拆包)的分配和也可能被称为多重任务语句。
RIGHT上的元组评估为然后结果被指定为槽的时隙到左边的变量。 (左边是不是真的即使语法使它看起来像一个。一个元组)
所以,
a = 1
b = 2
a, b = b, a + b
// a, b = 2, 1 + 2
// a, b = 2, 3
// a = 2
// b = 3
编码愉快。
这是一个称为'unpacking'的python特征的语法糖。这实际上意味着:
(a, b) = (b, a + b) # This is also valid syntax
创建了元组(b, a + b)
,锁定值。然后,将这些值分段分配给元组(a,b)中的标识符。由于值在分配开始之前被锁定,因此每个值都取得期望值。这个想法来源于Haskell中的模式匹配。
这被称为序列拆包。右侧被打包成一个元组(因为逗号)。 Python包然后评估右侧,然后将这些值解包到左侧。
- 1. 试图了解CSS3语法
- 2. 试图了解F#类定义语法
- 3. 新到Android - 试图了解Java语法:“追加”
- 4. 了解Python语法/表示法
- 5. 了解python中的csv DictWriter语法
- 6. Python尝试除了无效的语法?
- 7. 试图了解MD5算法
- 8. 新的Python和想了解的argv语法
- 9. 了解语法
- 10. 试图了解新的关键字
- 11. 试图了解
- 12. 试图了解开源的节点回调语法
- 13. 试图了解语法在回调函数中的工作
- 14. 试图了解这个.contain的语法()函数
- 15. 试图了解ruby语法的特定位
- 16. 试图了解Python Unicode异常
- 17. 试图了解一个Python代码行
- 18. 试图了解Python装饰器
- 19. 试图了解Knuth的排列算法
- 20. Jquery:了解语法
- 21. 了解LINQ语法
- 22. 了解DART语法
- 23. 了解Javascript语法?
- 24. 了解算法的语言语法
- 25. scapy新手。试图了解sr()
- 26. 新来JS,试图了解吊装
- 27. 抽象语法树 - 菜鸟级(试图了解)
- 28. 试图了解“模板<class U>朋友类B”;语法
- 29. 试图了解在伊莎贝尔“语法”关键字/ HOL
- 30. 试图了解onPageScrolled
它被称为[平行分配](http://en.wikipedia.org/wiki/Assignment_(computer_science)#Parallel_assignment)。 – miku
@miku:Neato - 我已经使用过这种技术很多次了,但没有意识到它有一个正式的术语。 – Gerrat
哈哈。这就像面试问题。我希望没有人真的写上面的代码,但是,我想,可能我会。至少,真正的变量名称会更有意义。 – morningstar