关于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装饰器在Django框架下去除冗余代码的教程
Apr 16 Python
python的Tqdm模块的使用
Jan 10 Python
Python实现文件信息进行合并实例代码
Jan 17 Python
Python实现爬取百度贴吧帖子所有楼层图片的爬虫示例
Apr 26 Python
django框架实现一次性上传多个文件功能示例【批量上传】
Jun 19 Python
对python中的os.getpid()和os.fork()函数详解
Aug 08 Python
python 实现turtle画图并导出图片格式的文件
Dec 07 Python
python 利用已有Ner模型进行数据清洗合并代码
Dec 24 Python
自学python用什么系统好
Jun 23 Python
Python Map 函数的使用
Aug 28 Python
写好Python代码的几条重要技巧
May 21 Python
Elasticsearch 数据类型及管理
Apr 19 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 文件上传模型,支持多文件上传
2009/08/13 PHP
Apache下禁止php文件被直接访问的解决方案
2013/04/25 PHP
PHP file_get_contents设置超时处理方法
2013/09/30 PHP
Yii2中Restful API原理实例分析
2016/07/25 PHP
Yii 2.0实现联表查询加搜索分页的方法示例
2017/08/02 PHP
浅谈PHP5.6 与 PHP7.0 区别
2019/10/09 PHP
Laravel框架Blade模板简介及模板继承用法分析
2019/12/03 PHP
jQuery开发者都需要知道的5个小技巧
2010/01/08 Javascript
Javascript调用C#代码
2011/01/17 Javascript
jQuery验证Checkbox是否选中的代码 推荐
2011/09/04 Javascript
jquery使用ajax实现微信自动回复插件
2014/04/28 Javascript
禁用页面部分JavaScript不是全部而是部分
2014/09/03 Javascript
jQuery中before()方法用法实例
2014/12/25 Javascript
jquery实现焦点图片随机切换效果的方法
2015/03/12 Javascript
jQuery实现鼠标选中文字后弹出提示窗口效果【附demo源码】
2016/09/05 Javascript
JavaScript获取键盘按键的键码(参照表)
2017/01/10 Javascript
vue-router 组件复用问题详解
2018/01/22 Javascript
JS实现仿微信支付弹窗功能
2018/06/25 Javascript
使用JavaScript解析URL的方法示例
2019/03/01 Javascript
详解vue 自定义组件使用v-model 及探究其中原理
2019/10/11 Javascript
在vue中阻止浏览器后退的实例
2019/11/06 Javascript
JS实现简单日历特效
2020/01/03 Javascript
从零学python系列之浅谈pickle模块封装和拆封数据对象的方法
2014/05/23 Python
用pycharm开发django项目示例代码
2019/06/13 Python
华为校园招聘上机笔试题 扑克牌大小(python)
2020/04/22 Python
Python迭代器iterator生成器generator使用解析
2019/10/24 Python
python生成任意频率正弦波方式
2020/02/25 Python
使用python检查yaml配置文件是否符合要求
2020/04/09 Python
荷兰和比利时时尚鞋店:Van Dalen
2018/04/23 全球购物
Noon埃及:埃及在线购物
2019/11/26 全球购物
介绍一下结构化程序设计方法和面向对象程序设计方法的区别
2012/06/27 面试题
大学生社会实践活动总结报告
2015/05/06 职场文书
七一活动主持词
2015/06/29 职场文书
市级三好生竞选稿
2015/11/21 职场文书
Django给表单添加honeypot验证增加安全性
2021/05/06 Python
python基础之模块的导入
2021/10/24 Python