Python 理解困难3.2。编程的第一步
我最近开始阅读一本新指南,并选择了[python.org教程](。然而,在中,我无法理解这段代码是如何:Python 理解困难3.2。编程的第一步,python,Python,我最近开始阅读一本新指南,并选择了[python.org教程](。然而,在中,我无法理解这段代码是如何: a, b = 0, 1 while b < 10: print b a, b = b, a+b 该指南提到: 第一行包含一个多赋值:变量a和b同时获得新的值0和1。在最后一行,再次使用该值,表明在任何赋值发生之前,首先计算右侧的表达式。计算右侧表达式从左到右 有人能为我简化一下吗?第一行可以像这样展开: a = 0 b = 1 不幸的是,最后一行不是很容易,因为
a, b = 0, 1
while b < 10:
print b
a, b = b, a+b
该指南提到:
- 第一行包含一个多赋值:变量
和a
同时获得新的值0和1。在最后一行,再次使用该值,表明在任何赋值发生之前,首先计算右侧的表达式。计算右侧表达式从左到右b
有人能为我简化一下吗?第一行可以像这样展开:
a = 0
b = 1
不幸的是,最后一行不是很容易,因为这些值是同时“解包”的。在这种情况下,如果要按顺序写入,则需要一个临时变量:
old_a = a
a = b
b = old_a + b
第一行可以按如下方式展开:
a = 0
b = 1
不幸的是,最后一行不是很容易,因为这些值是同时“解包”的。在这种情况下,如果要按顺序写入,则需要一个临时变量:
old_a = a
a = b
b = old_a + b
演示在任何赋值之前,都首先计算右侧的表达式
表示它首先实现第二个表达式(a+b
),然后将a
与未修改的b
相等,将b
与a+b
相等
看起来可能是这样
step1 => a + b
step2 => a = b
b = step1
step2 step1 b
loop | | |
| | |
| a b | mod | output
1 | 0 1 | - | >> 1
2 | 1 1 | 0+1 | >> 1
3 | 1 2 | 1+1 | >> 2
4 | 2 3 | 1+2 | >> 3
5 | 3 5 | 2+3 | >> 5
6 | 5 8 | 3+5 | >> 8
演示在任何赋值之前,都首先计算右侧的表达式
表示它首先实现第二个表达式(a+b
),然后将a
与未修改的b
相等,将b
与a+b
相等
看起来可能是这样
step1 => a + b
step2 => a = b
b = step1
step2 step1 b
loop | | |
| | |
| a b | mod | output
1 | 0 1 | - | >> 1
2 | 1 1 | 0+1 | >> 1
3 | 1 2 | 1+1 | >> 2
4 | 2 3 | 1+2 | >> 3
5 | 3 5 | 2+3 | >> 5
6 | 5 8 | 3+5 | >> 8
我觉得已经很清楚了(你不懂的话可以用谷歌搜索),但Martijn可能有一些有用的说法,右手边产生两个值:
b
和a+b
。这些值首先计算出来。然后这两个值被分配给左边的名称。@TimCastelijns:mgilson已经涵盖了它。相关的我认为它已经非常清楚了(你不懂的单词可以用谷歌搜索),但Martijn可能有一些有用的话要说,右侧产生两个值:b
和a+b
。首先计算它们。然后将这两个值分配给左侧的名称。@TimCastelijns:mgilson涵盖了这两个值。相关的,我想我理解。但是为什么代码需要按打印b a,b的形式来构造呢=b,b+a?代码的哪一部分指示该过程应该重复?@Reginsmal--而循环是指示该操作重复的部分。因此[a,b=b,a+b]当只打印b时,是否需要重复该过程?值old_a将始终等于0?我想我理解。但是为什么代码需要结构为打印b a,b=b,b+a?代码的哪一部分指示该过程应该重复?@Reginsmal--while
循环是指示说明操作会重复。那么[a,b=b,a+b]是只打印b时需要重复的过程吗?而且旧值a始终等于0?