关于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类继承与子类实例初始化用法分析
Apr 17 Python
python实现bucket排序算法实例分析
May 04 Python
python实现ping的方法
Jul 06 Python
Python的Flask框架及Nginx实现静态文件访问限制功能
Jun 27 Python
Python爬虫番外篇之Cookie和Session详解
Dec 27 Python
利用Python将数值型特征进行离散化操作的方法
Nov 06 Python
Python文件常见操作实例分析【读写、遍历】
Dec 10 Python
python3.7 openpyxl 删除指定一列或者一行的代码
Oct 08 Python
python多进程重复加载的解决方式
Dec 13 Python
Python高阶函数、常用内置函数用法实例分析
Dec 26 Python
Python 给下载文件显示进度条和下载时间的实现
Apr 02 Python
Mac PyCharm中的.gitignore 安装设置教程
Apr 16 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中计算字符串相似度的函数代码
2012/12/29 PHP
PHP爬虫之百万级别知乎用户数据爬取与分析
2016/01/22 PHP
PHP生成随机码的思路与方法实例探索
2019/04/11 PHP
javascript 表单的友好用户体现
2009/01/07 Javascript
getElementsByTagName vs selectNodes效率 及兼容的selectNodes实现
2010/02/26 Javascript
编写可维护面向对象的JavaScript代码[翻译]
2011/02/12 Javascript
js克隆对象、数组的常用方法介绍
2013/09/26 Javascript
js的延迟执行问题分析
2014/06/23 Javascript
javascript操作符&quot;!~&quot;详解
2015/02/10 Javascript
js实现的后台左侧管理菜单代码
2015/09/11 Javascript
Jquery ajax加载等待执行结束再继续执行下面代码操作
2015/11/24 Javascript
jqGrid中文文档之选项设置
2015/12/02 Javascript
BootStrap Typeahead自动补全插件实例代码
2016/08/10 Javascript
老生常谈JQuery data方法的使用
2016/09/09 Javascript
javascript 判断是否是微信浏览器的方法
2016/10/09 Javascript
Javascript设计模式之装饰者模式详解篇
2017/01/17 Javascript
详解vue组件开发脚手架
2018/06/15 Javascript
vue-video-player 断点续播的实现
2021/02/01 Vue.js
python中int与str互转方法
2018/07/02 Python
如何用python写一个简单的词法分析器
2018/12/18 Python
浅谈python新式类和旧式类区别
2019/04/26 Python
Python+PyQT5的子线程更新UI界面的实例
2019/06/14 Python
Python任务自动化工具tox使用教程
2020/03/17 Python
PyTorch实现重写/改写Dataset并载入Dataloader
2020/07/14 Python
python爬虫中抓取指数的实例讲解
2020/12/01 Python
canvas绘制图片drawImage使用方法
2020/09/15 HTML / CSS
LA MER海蓝之谜美国官网:传奇面霜
2016/08/27 全球购物
YSL圣罗兰美妆英国官网:Yves Saint Laurent Beauty UK
2019/08/03 全球购物
质检部部长职责
2013/12/16 职场文书
商场活动策划方案
2014/01/24 职场文书
感恩教育活动总结
2014/05/05 职场文书
学习“七一”讲话精神体会
2014/07/08 职场文书
家长学校培训材料
2014/08/20 职场文书
学习礼仪心得体会
2014/09/01 职场文书
党课培训心得体会
2014/09/02 职场文书
焦裕禄纪念馆观后感
2015/06/09 职场文书