关于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使用新浪微博api上传图片到微博示例
Jan 10 Python
python迭代器实例简析
Sep 25 Python
详解Python中的__new__()方法的使用
Apr 09 Python
Python实现获取域名所用服务器的真实IP
Oct 25 Python
Python二叉搜索树与双向链表转换实现方法
Apr 29 Python
对python中Librosa的mfcc步骤详解
Jan 09 Python
pycharm new project变成灰色的解决方法
Jun 27 Python
解决Pycharm后台indexing导致不能run的问题
Jun 27 Python
Python Web框架之Django框架文件上传功能详解
Aug 16 Python
windows下的pycharm安装及其设置中文菜单
Apr 23 Python
Django xadmin安装及使用详解
Oct 26 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
ftp类(example.php)
2006/10/09 PHP
十天学会php之第四天
2006/10/09 PHP
PHP IPV6正则表达式验证代码
2010/02/16 PHP
PHP预定义超全局数组变量小结
2018/08/20 PHP
php桥接模式应用案例分析
2019/10/23 PHP
js+FSO遍历文件夹下文件并显示
2007/03/07 Javascript
基于jQuery的弹出警告对话框美化插件(警告,确认和提示)
2010/06/10 Javascript
javascript showModalDialog 内跳转页面的问题
2010/11/25 Javascript
自制基于jQuery的智能提示插件一枚
2011/02/18 Javascript
jQuery.each使用详解
2015/07/07 Javascript
基于javascript实现单选及多选的向右和向左移动实例
2015/07/25 Javascript
jQuery表格行上移下移和置顶的实现方法
2015/10/08 Javascript
vue.js图片转Base64上传图片并预览的实现方法
2018/08/02 Javascript
解决vue中监听input只能输入数字及英文或者其他情况的问题
2018/08/30 Javascript
Vue  webpack 项目自动打包压缩成zip文件的方法
2019/07/24 Javascript
vue实现百度搜索功能
2020/12/28 Javascript
js实现单元格拖拽效果
2020/02/10 Javascript
Python模块搜索概念介绍及模块安装方法介绍
2015/06/03 Python
python3.6使用pickle序列化class的方法
2018/10/22 Python
详解python使用turtle库来画一朵花
2019/03/21 Python
在Python中表示一个对象的方法
2019/06/25 Python
Python迭代器iterator生成器generator使用解析
2019/10/24 Python
Python实现点云投影到平面显示
2020/01/18 Python
Tensorflow实现在训练好的模型上进行测试
2020/01/20 Python
使用Tensorflow实现可视化中间层和卷积层
2020/01/24 Python
Python根据指定文件生成XML的方法
2020/06/29 Python
澳大利亚UGG工厂直销:Australian Ugg Boots
2017/10/14 全球购物
官方授权图形T恤和服装:Fifth Sun
2019/06/12 全球购物
精致的手工皮鞋:Shoe Embassy
2019/11/08 全球购物
一些.net面试题
2014/10/06 面试题
肯尼迪就职演说稿
2013/12/31 职场文书
搬家公司的创业计划书
2014/01/01 职场文书
大学毕业晚会开场白
2015/05/29 职场文书
主题班会开场白
2015/06/01 职场文书
springboot集成redis存对象乱码的问题及解决
2022/06/16 Java/Android
MySQL事务的隔离级别详情
2022/07/15 MySQL