关于python多重赋值的小问题


Posted in Python onApril 17, 2019

前言

今天无意中发现在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爬虫入门教程之点点美女图片爬虫代码分享
Sep 02 Python
Python字符串处理函数简明总结
Apr 13 Python
Python守护进程用法实例分析
Jun 04 Python
selenium+python自动化测试之多窗口切换
Jan 23 Python
python对绑定事件的鼠标、按键的判断实例
Jul 17 Python
python之拟合的实现
Jul 19 Python
Python递归及尾递归优化操作实例分析
Feb 01 Python
windows下python安装pip方法详解
Feb 10 Python
Pycharm中安装Pygal并使用Pygal模拟掷骰子(推荐)
Apr 08 Python
Python matplotlib读取excel数据并用for循环画多个子图subplot操作
Jul 14 Python
pandas map(),apply(),applymap()区别解析
Feb 24 Python
Python import模块的缓存问题解决方案
Jun 02 Python
详解python3安装pillow后报错没有pillow模块以及没有PIL模块问题解决
Apr 17 #Python
一步步教你用python的scrapy编写一个爬虫
Apr 17 #Python
Python中如何导入类示例详解
Apr 17 #Python
Linux上使用Python统计每天的键盘输入次数
Apr 17 #Python
python3转换code128条形码的方法
Apr 17 #Python
Python爬虫——爬取豆瓣电影Top250代码实例
Apr 17 #Python
Python2与Python3的区别实例总结
Apr 17 #Python
You might like
php debug 安装技巧
2011/04/30 PHP
php分页示例分享
2014/04/30 PHP
PHP中if和or运行效率对比
2014/12/12 PHP
php模仿asp Application对象在线人数统计实现方法
2015/01/04 PHP
PHP动态输出JavaScript代码实例
2015/02/12 PHP
摘自织梦CMS的HTTP文件下载类
2015/08/08 PHP
轻松掌握php设计模式之访问者模式
2016/09/23 PHP
js中将多个语句写成一个语句的两种方法小结
2007/12/08 Javascript
jquery下为Event handler传递动态参数的代码
2011/01/06 Javascript
深入理解JavaScript系列(13) This? Yes,this!
2012/01/18 Javascript
使用phantomjs进行网页抓取的实现代码
2014/09/29 Javascript
JavaScript使用function定义对象并调用的方法
2015/03/23 Javascript
javascript包装对象实例分析
2015/03/27 Javascript
最精简的JavaScript实现鼠标拖动效果的方法
2015/05/11 Javascript
JavaScript实现的简单拖拽效果
2015/06/01 Javascript
最佳的JavaScript错误处理实践
2016/07/16 Javascript
vue+jquery+lodash实现滑动时顶部悬浮固定效果
2018/04/28 jQuery
Vue路由history模式解决404问题的几种方法
2018/09/29 Javascript
Vue将页面导出为图片或者PDF
2020/08/17 Javascript
vue 解决provide和inject响应的问题
2020/11/12 Javascript
使用go和python递归删除.ds store文件的方法
2014/01/22 Python
用python登录Dr.com思路以及代码分享
2014/06/25 Python
Python日期的加减等操作的示例
2017/08/15 Python
对python添加模块路径的三种方法总结
2018/10/16 Python
seek引发的python文件读写的问题及解决
2019/07/26 Python
如何用OpenCV -python3实现视频物体追踪
2019/12/04 Python
python实现飞机大战游戏(pygame版)
2020/10/26 Python
Python从文件中读取数据的方法步骤
2020/11/18 Python
工程师求职简历的自我评价分享
2013/10/10 职场文书
新入职员工的自我介绍演讲稿
2014/01/02 职场文书
国庆节促销广告语2014
2014/09/19 职场文书
单位工作证明
2014/10/07 职场文书
2014年党总支工作总结
2014/12/18 职场文书
奖励通知
2015/04/22 职场文书
结婚仪式主持词
2015/06/29 职场文书
创业计划书之花店
2019/09/20 职场文书