Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中,在单行中分配变量和在多行中分配变量有什么区别_Python - Fatal编程技术网

在python中,在单行中分配变量和在多行中分配变量有什么区别

在python中,在单行中分配变量和在多行中分配变量有什么区别,python,Python,我已经为斐波那契数列编写了一个脚本,其中包括单行变量赋值和多行变量赋值。我得到了两个不同的结果 多行: class fibonacci: def fib(self,num): result = [] a = 0 b = 1 while a < num: result.append(a) a = b b = a + b return result instanc

我已经为斐波那契数列编写了一个脚本,其中包括单行变量赋值和多行变量赋值。我得到了两个不同的结果

多行:

class fibonacci:
    def fib(self,num):
      result = []
      a = 0
      b = 1
      while a < num:
          result.append(a)
          a = b
          b =  a + b
      return result

instance = fibonacci()
new_inst = instance.fib(100)
print new_inst
订单更改:

class fibonacci:
    def fib(self,num):
      result = []
      b = 1
      a = 0
      while a < num:
          result.append(a)
          b = a + b
          a = b
      return result

instance = fibonacci()
new_inst = instance.fib(100)
print new_inst
单线:

class fibonacci:
    def fib(self,num):
      result = []
      a,b = 0,1
      while a < num:
          result.append(a)
          a,b = b, a + b
      return result

instance = fibonacci()
new_inst = instance.fib(100)
print new_inst

唯一的区别是评估的顺序。当你分配

a, b = b, a + b
右侧表达式在赋值到左侧之前会进行完全求值,因此求值顺序为:

foo = a + b
bar = a
b = foo
a = bar
这与第一个示例中的评估顺序不同,即:

 a = b
 b =  a + b
因此,您的两个示例生成不同的结果

为了解决您的问题,我可能会使用:

c = a
a = b
b = a + c

这将根据需要生成正确的输出。

类fibonacci:def fib(self,num):result=[]a,b=0,1而a
,但我仍然得到了相同的输出:[0,1,2,4,8,16,32,64]我已经更改了顺序,但仍然得到了两个不同的输出,但为什么还要使用一个变量呢?您不必这样做。您的第二个示例是正确的。但是,为了清楚起见(以及您的理解),我的解决方案可能更简单。
foo = a + b
bar = a
b = foo
a = bar
 a = b
 b =  a + b
c = a
a = b
b = a + c