关于python多重赋值的小问题

yipeiwu_com7年前Python基础

前言

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

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

a,b = 0,1 

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

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

# Fibonacci series:
a, b = 0, 1
while b < 10:
 print b
 a, b = b, a + b 

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

1
1
2
3
5
8

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

#Fibonacci series:
a = 0
b = 1
while b < 10:
 print b
 a = b
 b = a + b

运行结果是:

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使用Tkinter实现机器人走迷宫

Python使用Tkinter实现机器人走迷宫

这本是课程的一个作业研究搜索算法,当时研究了一下Tkinter,然后写了个很简单的机器人走迷宫的界面,并且使用了各种搜索算法来进行搜索,如下图: 使用A*寻找最优路径: 由于...

50行Python代码实现视频中物体颜色识别和跟踪(必须以红色为例)

50行Python代码实现视频中物体颜色识别和跟踪(必须以红色为例)

目前计算机视觉(CV)与自然语言处理(NLP)及语音识别并列为人工智能三大热点方向,而计算机视觉中的对象检测(objectdetection)应用非常广泛,比如自动驾驶、视频监控、工业质...

python读取csv和txt数据转换成向量的实例

最近写程序需要从文件中读取数据,并把读取的数据转换成向量。 查阅资料之后找到了读取csv文件和txt文件两种方式,下面结合自己的实验过程,做简要记录,供大家参考: 1、读取csv文件的数...

用python编写第一个IDA插件的实例

IDA插件是经过编译的、功能更强大的IDC脚本,与仅仅使用脚本相比,插件能够执行更加复杂的任务。与编写IDC脚本相比,python显得更为轻巧和强大,IDAPython作为IDA的一个插...

Windows下python3.7安装教程

Windows下python3.7安装教程

记录了Windows安装python3.7的详细过程,供大家参考,具体内容如下 1. 在python的官网下载python对应版本:官网地址 64位下载Windows x86-64 ex...