python中的变量赋值查询

Ryu*_*ura 4 python fibonacci variable-assignment

我在python中编写Fibonacci代码.以下解决方案是我的.

在此输入图像描述

下面的另一个解决方案来自python.org.

在此输入图像描述

任何人都可以告诉我为什么它会产生不同的答案,即使分配变量的逻辑是相同的?

Joã*_*ida 7

这两个计划并不相同.equals(=)的右侧一起进行评估.这样做:

a=b
b=a+b
Run Code Online (Sandbox Code Playgroud)

不同于:

a,b = b,a+b
Run Code Online (Sandbox Code Playgroud)

这实际上与以下相同:

c = a
a = b
b = b + c
Run Code Online (Sandbox Code Playgroud)

您的示例实际上包含在Python文档中:

第一行包含多个赋值:变量a和b同时获取新值0和1.在最后一行再次使用它,证明右侧的表达式在任何赋值之前都是首先计算的发生.右侧表达式从左到右进行评估.


小智 7

线条

a = b # Assigns the value of 'b' to 'a'
b = a + b # Adds the new value of 'a' to 'b'
Run Code Online (Sandbox Code Playgroud)

然而,

a, b = b, a+b指定bto 的值a.添加to 的现有值.ab


Buz*_*uzz 5

它在第二个例子中起作用的原因是因为在a=b两者都完成之前不进行评估.因此,当它到达b=a+b零件时,a仍然是它以前的值.在您的第一个示例中,您a在使用它之前会被覆盖.在python中,当您以这种方式声明变量时,您实际上将它们用作元组.这意味着在整行完成之前,它们会保留原始值.一旦元组被解压缩,它们就会被覆盖.