关于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中用Decorator来简化元编程的教程
Apr 13 Python
Python的条件语句与运算符优先级详解
Oct 13 Python
Python 高级专用类方法的实例详解
Sep 11 Python
JavaScript中的模拟事件和自定义事件实例分析
Jul 27 Python
pandas 透视表中文字段排序方法
Nov 16 Python
Python图像滤波处理操作示例【基于ImageFilter类】
Jan 03 Python
对python实现合并两个排序链表的方法详解
Jan 23 Python
PyTorch搭建多项式回归模型(三)
May 22 Python
django获取from表单multiple-select的value和id的方法
Jul 19 Python
Python3 虚拟开发环境搭建过程(图文详解)
Jan 06 Python
详解Python设计模式之策略模式
Jun 15 Python
python中count函数知识点浅析
Dec 17 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的一个基础知识 表单提交
2011/07/04 PHP
php预定义变量使用帮助(带实例)
2013/10/30 PHP
php ctype函数中文翻译和示例
2014/03/21 PHP
PHP类的封装与继承详解
2015/09/29 PHP
DWZ+ThinkPHP开发时遇到的问题分析
2016/12/12 PHP
接收键盘指令的脚本
2006/06/26 Javascript
JavaScript高级程序设计(第3版)学习笔记9 js函数(下)
2012/10/11 Javascript
jQuery实现页面滚动时动态加载内容的方法
2015/03/20 Javascript
javascript实现支持移动设备画廊
2015/08/24 Javascript
jquery.Jcrop结合JAVA后台实现图片裁剪上传实例
2016/11/05 Javascript
利用select实现年月日三级联动的日期选择效果【推荐】
2016/12/13 Javascript
详解用原生JavaScript实现jQuery的某些简单功能
2016/12/19 Javascript
jQuery选择器_动力节点Java学院整理
2017/07/05 jQuery
在 Angular 中使用Chart.js 和 ng2-charts的示例代码
2017/08/17 Javascript
在 Typescript 中使用可被复用的 Vue Mixin功能
2018/04/17 Javascript
引入外部js脚本加载慢与页面白屏问题的解决
2018/12/10 Javascript
vue组件间的参数传递实例详解
2019/04/26 Javascript
vue-cli+axios实现文件上传下载功能(下载接收后台返回文件流)
2019/05/10 Javascript
javascript防抖函数debounce详解
2019/06/11 Javascript
Python实现获取操作系统版本信息方法
2015/04/08 Python
python实现简单的单变量线性回归方法
2018/11/08 Python
django orm 通过related_name反向查询的方法
2018/12/15 Python
PyQt5 界面显示无响应的实现
2020/03/26 Python
如何基于python3和Vue实现AES数据加密
2020/03/27 Python
django执行数据库查询之后实现返回的结果集转json
2020/03/31 Python
伊利莎白雅顿官网:Elizabeth Arden
2016/10/10 全球购物
世界上最大的售后摩托车零配件超市:J&P Cycles
2017/12/08 全球购物
个人简历中的自我评价怎么写
2014/01/26 职场文书
初一科学教学反思
2014/01/27 职场文书
小学生获奖感言范文
2014/02/02 职场文书
节约电力资源的建议书
2014/03/12 职场文书
2014离婚协议书范文两篇
2014/09/15 职场文书
2016年3月份红领巾广播稿
2015/12/21 职场文书
学校运动会开幕词
2016/03/03 职场文书
原型和原型链 prototype和proto的区别详情
2021/11/02 Javascript
SQL Server的存储过程与触发器以及系统函数和自定义函数
2022/04/10 SQL Server