Ryu*_*ura 4 python fibonacci variable-assignment
我在python中编写Fibonacci代码.以下解决方案是我的.
下面的另一个解决方案来自python.org.
任何人都可以告诉我为什么它会产生不同的答案,即使分配变量的逻辑是相同的?
这两个计划并不相同.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
它在第二个例子中起作用的原因是因为在a=b两者都完成之前不进行评估.因此,当它到达b=a+b零件时,a仍然是它以前的值.在您的第一个示例中,您a在使用它之前会被覆盖.在python中,当您以这种方式声明变量时,您实际上将它们用作元组.这意味着在整行完成之前,它们会保留原始值.一旦元组被解压缩,它们就会被覆盖.