关于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使用xlrd模块读写Excel文件的方法
May 06 Python
Python函数的周期性执行实现方法
Aug 13 Python
python爬虫 正则表达式使用技巧及爬取个人博客的实例讲解
Oct 20 Python
使用python进行文本预处理和提取特征的实例
Jun 05 Python
Python 确定多项式拟合/回归的阶数实例
Dec 29 Python
python 正则表达式贪婪模式与非贪婪模式原理、用法实例分析
Oct 14 Python
python双向链表原理与实现方法详解
Dec 03 Python
Python vtk读取并显示dicom文件示例
Jan 13 Python
使用 Python 处理3万多条数据只要几秒钟
Jan 19 Python
解决jupyter notebook显示不全出现框框或者乱码问题
Apr 09 Python
利用PyQt5+Matplotlib 绘制静态/动态图的实现代码
Jul 13 Python
使用Django框架创建项目
Jun 10 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
星际争霸 Starcraft 编年史
2020/03/14 星际争霸
PHP面向对象学习笔记之一 基础概念
2012/10/06 PHP
PHP Switch 语句之学习笔记
2013/09/21 PHP
使用Curl进行抓取远程内容时url中文编码问题示例探讨
2013/10/29 PHP
Laravel关联模型中过滤结果为空的结果集(has和with区别)
2018/10/18 PHP
PHP htmlspecialchars()函数用法与实例讲解
2019/03/08 PHP
yii2.0框架实现上传excel文件后导入到数据库的方法示例
2020/04/13 PHP
PHP 图片处理
2020/09/16 PHP
jQuery AJAX回调函数this指向问题
2010/02/08 Javascript
在JQuery dialog里的服务器控件 事件失效问题
2010/12/08 Javascript
详细解读AngularJS中的表单验证编程
2015/06/19 Javascript
jQuery简单实现验证邮箱格式
2015/07/15 Javascript
实例讲解jquery中mouseleave和mouseout的区别
2016/02/17 Javascript
Bootstrap fileinput文件上传预览插件使用详解
2017/05/16 Javascript
Angular2.js实现表单验证详解
2017/06/23 Javascript
vue中轮训器的使用
2019/01/27 Javascript
jQuery使用$.extend(true,object1, object2);实现深拷贝对象的方法分析
2019/03/06 jQuery
详解微信UnionID作用
2019/05/15 Javascript
Vue+abp微信扫码登录的实现代码示例
2020/01/06 Javascript
探索浏览器页面关闭window.close()的使用详解
2020/08/21 Javascript
Python中使用装饰器时需要注意的一些问题
2015/05/11 Python
Python简单操作sqlite3的方法示例
2017/03/22 Python
python实现unicode转中文及转换默认编码的方法
2017/04/29 Python
Python入门_浅谈字符串的分片与索引、字符串的方法
2017/05/16 Python
Python基于回溯法子集树模板解决m着色问题示例
2017/09/07 Python
Python实现的各种常见分布算法示例
2018/12/13 Python
Python实现基于socket的udp传输与接收功能详解
2019/11/15 Python
最小二乘法及其python实现详解
2020/02/24 Python
Backcountry旗下的户外商品闪购网站:steep&cheap
2016/09/22 全球购物
英国家居用品和家居装饰品购物网站:Cox & Cox
2019/08/25 全球购物
面向对象概念面试题(.NET)
2016/11/04 面试题
秋季运动会通讯稿
2014/01/24 职场文书
创业计划书撰写原则
2014/01/25 职场文书
文员岗位职责范本
2014/03/08 职场文书
如何写好一份优秀的工作总结?
2019/06/21 职场文书
Javascript中Microtask和Macrotask鲜为人知的知识点
2022/04/02 Javascript