关于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生成指定长度的随机数密码
Jan 23 Python
Python实现的简单万年历例子分享
Apr 25 Python
python实现简易云音乐播放器
Jan 04 Python
浅谈python中requests模块导入的问题
May 18 Python
pycharm运行出现ImportError:No module named的解决方法
Oct 13 Python
python实现贪吃蛇小游戏
Mar 21 Python
Python+OpenCv制作证件图片生成器的操作方法
Aug 21 Python
Python中的单下划线和双下划线使用场景详解
Sep 09 Python
解析python实现Lasso回归
Sep 11 Python
NumPy中的维度Axis详解
Nov 26 Python
在pycharm中实现删除bookmark
Feb 14 Python
使用Python内置模块与函数进行不同进制的数的转换
Apr 26 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/07/17 PHP
PHP中Memcache操作类及用法实例
2014/12/12 PHP
thinkphp5使用无限极分类
2019/02/18 PHP
JavaScipt基本教程之JavaScript语言的基础
2008/01/16 Javascript
js url传值中文乱码之解决之道
2009/11/20 Javascript
Javascript 异步加载详解(浏览器在javascript的加载方式)
2012/05/20 Javascript
javascript动画对象支持加速、减速、缓入、缓出的实现代码
2012/09/30 Javascript
JS的get和set使用示例
2014/02/20 Javascript
浅谈javascript语法和定时函数
2015/05/03 Javascript
javascript实现树形菜单的方法
2015/07/17 Javascript
使用Function.apply()的参数数组化来提高 JavaScript程序性能的技巧
2015/12/23 Javascript
AngularJS入门教程之路由机制ngRoute实例分析
2016/12/13 Javascript
微信小程序日历组件calendar详解及实例
2017/06/08 Javascript
seajs中最常用的7个功能、配置示例
2017/10/10 Javascript
AngularJS创建一个上传照片的指令实例代码
2018/02/24 Javascript
基于vue-video-player自定义播放器的方法
2018/03/21 Javascript
移动端自适应flexible.js的使用方法(不用三大框架,仅写一个单html页面使用)推荐
2019/04/02 Javascript
Jquery动态列功能完整实例
2019/08/30 jQuery
[01:14]英雄,所敬略同——2018完美盛典宣传视频
2018/12/05 DOTA
使用Python3编写抓取网页和只抓网页图片的脚本
2015/08/20 Python
教你用python3根据关键词爬取百度百科的内容
2016/08/18 Python
ubuntu环境下python虚拟环境的安装过程
2018/01/07 Python
在PyCharm导航区中打开多个Project的关闭方法
2019/01/17 Python
python多线程并发让两个LED同时亮的方法
2019/02/18 Python
解决python 上传图片限制格式问题
2019/10/30 Python
pyecharts绘制中国2020肺炎疫情地图的实例代码
2020/02/12 Python
如何通过python检查文件是否被占用
2020/12/18 Python
如何在Cookie里面保存Unicode和国际化字符
2013/05/25 面试题
写一个函数返回1+2+3+…+n的值(假定结果不会超过长整型变量的范围)
2014/09/05 面试题
大专生自荐信
2013/10/04 职场文书
物业保安主管岗位职责
2013/12/25 职场文书
班组长岗位职责范本
2014/01/05 职场文书
开学第一周日记(三篇范文)
2019/08/23 职场文书
如何用PHP实现分布算法之一致性哈希算法
2021/05/26 PHP
Nginx实现高可用集群构建(Keepalived+Haproxy+Nginx)
2021/05/27 Servers
Nginx流量拷贝ngx_http_mirror_module模块使用方法详解
2022/04/07 Servers