关于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 相关文章推荐
TensorFlow平台下Python实现神经网络
Mar 10 Python
解决win64 Python下安装PIL出错问题(图解)
Sep 03 Python
python实时获取外部程序输出结果的方法
Jan 12 Python
Python Pexpect库的简单使用方法
Jan 29 Python
图文详解python安装Scrapy框架步骤
May 20 Python
Python使用Pandas读写Excel实例解析
Nov 19 Python
python 下载文件的多种方法汇总
Nov 17 Python
解决python3中os.popen()出错的问题
Nov 19 Python
分享unittest单元测试框架中几种常用的用例加载方法
Dec 02 Python
matplotlib交互式数据光标mpldatacursor的实现
Feb 03 Python
使用pycharm运行flask应用程序的详细教程
Jun 07 Python
详解Golang如何实现支持随机删除元素的堆
Sep 23 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
8个PHP数组面试题
2015/06/23 PHP
JAVASCRIPT IE 与 FF中兼容问题小结
2009/02/18 Javascript
javascript处理table表格的代码
2010/12/06 Javascript
在Firefox下js select标签点击无法弹出
2014/03/06 Javascript
JS实现简单的顶部定时关闭层效果
2014/06/15 Javascript
jquery实现焦点图片随机切换效果的方法
2015/03/12 Javascript
JavaScript实现模仿桌面窗口的方法
2015/07/18 Javascript
jquery实现滑动特效代码
2015/08/10 Javascript
javacript获取当前屏幕大小
2016/06/04 Javascript
手机端图片缩放旋转全屏查看PhotoSwipe.js插件实现
2016/08/25 Javascript
图文详解Javascript中的上下文和作用域
2017/02/15 Javascript
教你用十行node.js代码读取docx的文本
2017/03/08 Javascript
手写Node静态资源服务器的实现方法
2018/03/20 Javascript
JSON数据中存在单个转义字符“\”的处理方法
2018/07/11 Javascript
微信小程序实现自动定位功能
2018/10/31 Javascript
Node.js中的异步生成器与异步迭代详解
2021/01/31 Javascript
[04:52]第二届DOTA2亚洲邀请赛主赛事第一天比赛集锦:OG娜迦海妖放大配合谜团大中3人
2017/04/02 DOTA
[01:22:28]DOTA2-DPC中国联赛 正赛 SAG vs RNG BO3 第一场 1月18日
2021/03/11 DOTA
[59:00]DOTA2-DPC中国联赛 正赛 Ehome vs PSG.LGD BO3 第一场 3月7日
2021/03/11 DOTA
python结合opencv实现人脸检测与跟踪
2015/06/08 Python
Python二分查找详解
2015/09/13 Python
Python编程入门之Hello World的三种实现方式
2015/11/13 Python
python Django框架实现自定义表单提交
2016/03/25 Python
Python脚本完成post接口测试的实例
2018/12/17 Python
使用PyTorch将文件夹下的图片分为训练集和验证集实例
2020/01/08 Python
Python3实现建造者模式的示例代码
2020/06/28 Python
关于tensorflow softmax函数用法解析
2020/06/30 Python
如何创建一个Flask项目并进行简单配置
2020/11/18 Python
酒店总经理欢迎词
2014/01/08 职场文书
如何打造一封优秀的留学推荐信
2014/01/25 职场文书
优秀班组长事迹
2014/05/31 职场文书
搞笑的获奖感言
2014/08/16 职场文书
使用Html+Css实现简易导航栏功能(导航栏遇到鼠标切换背景颜色)
2021/04/07 HTML / CSS
Python自动操作神器PyAutoGUI的使用教程
2022/06/16 Python
mysql sock文件存储了什么信息
2022/07/15 MySQL
win10输入法不见了只能打出字母怎么解决?
2022/08/05 数码科技