美文网首页
关于python多重赋值的小问题

关于python多重赋值的小问题

作者: 爱猫猫的老狗 | 来源:发表于2019-11-02 09:38 被阅读0次

今天无意中发现在python中的一个多重赋值的小问题,自己一开始是比较简单化的理解了这个多重赋值操作的概念,所以导致在一道实现斐波那契数列的代码中,发现了自己的问题,顺便记录下吧,当作是学习总结。

首先是python的多重赋值操作,先用一个直观的代码来看:

a,b = 0,1

上述就是一个最简单的多重赋值操作,这个赋值操作的作用是将赋值操作 = 右侧的对象逐一赋给左侧的对象,所以这个操作结果是a对象的值为0,b对象的值为1,这点很好理解。

然鹅,如果是下列的代码呢?

a, b = 0, 1
while b < 10:
      print (a)
      a, b = b, a + b

显然,运行结果是正确的:

0
1
1
2
3
5
8

那么如果将代码改成这样呢?

a = 0
b = 1
while b < 10:
      print (a)
      a = b
      b = a + b

运行结果是:

0
1
2
4
8
显然不正确。。。。

其实问题在于多重赋值操作是一个等号右边表达式会在赋值操作进行之前被完全解析的过程。也就是说,对于

a, b = 0, 1

变量a和b是同时获得新的值0和1。而对于

a, b = b, a + b

说明等号右边的表达式在赋值之前首先被完全解析。

右侧表达式是从左到右计算的。在赋值完成之前,a+b的操作是已经完成了表达式的计算结果的

所以,如果将
 a,b = b,a+b 
     等同于
 a = b
 b = a+b 
是完全不正确的。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,

相关文章

  • 关于python多重赋值的小问题

    今天无意中发现在python中的一个多重赋值的小问题,自己一开始是比较简单化的理解了这个多重赋值操作的概念,所以导...

  • python 13:多重赋值

    python可以多重赋值,这是它的一个特色。 多重赋值可以下列形式进行: >>> a,b,c=1,2,3 >>>a...

  • python多重赋值

    多重赋值语句,不是说x=y, y=x+y=y+y,而是把右边的变量赋给临时变量后,再做赋值(In an assig...

  • Lua学习笔记(3)——语句

    赋值 1.Lua支持多重赋值:a,b = 10,2*x 等价于 a = 10, b=2*x。 2.多重赋值中,先对...

  • 关于python赋值的迷思

    参考链接写这篇文章的原因在于写链表逆序时看到的python代码,语法糖真香啊,同时也发现了自己对python赋值方...

  • Python变量和数据类型

    一. Python中的变量赋值 单变量赋值: 多变量赋值: 二. Python中的数据类型 Python有五个...

  • 当心掉进Python多重继承里的坑

    关于类的知识点里面,有一块是关于多重继承,跟其他主流语言一样,Python也支持多重继承,多重继承虽然有一些好处,...

  • 当心掉进Python多重继承里的坑

    关于类的知识点里面,有一块是关于多重继承,跟其他主流语言一样,Python也支持多重继承,多重继承虽然有一些好处,...

  • Python死磕——Python赋值语句、表达式以及打印

    Python赋值语句 Python中的赋值语句的基本形式是在等号左边写赋值语句的目标。要赋值的对象位于右侧。左侧的...

  • 几个关于python的小问题

    问题: `1、安装完之后,在命令行打python,提示‘python’不是内部或外部命令,也不是可运行的程序或批处...

网友评论

      本文标题:关于python多重赋值的小问题

      本文链接:https://www.haomeiwen.com/subject/jajcbctx.html