关于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 相关文章推荐
ssh批量登录并执行命令的python实现代码
May 25 Python
Python import用法以及与from...import的区别
May 28 Python
Python中的命令行参数解析工具之docopt详解
Mar 27 Python
python中使用正则表达式的后向搜索肯定模式(推荐)
Nov 11 Python
人脸识别经典算法一 特征脸方法(Eigenface)
Mar 13 Python
mac下如何将python2.7改为python3
Jul 13 Python
利用python循环创建多个文件的方法
Oct 25 Python
基于Django统计博客文章阅读量
Oct 29 Python
使用python写一个自动浏览文章的脚本实例
Dec 05 Python
Python列表倒序输出及其效率详解
Mar 04 Python
Django执行源生mysql语句实现过程解析
Nov 12 Python
使用python生成大量数据写入es数据库并查询操作(2)
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
PHP的SQL注入实现(测试代码安全不错)
2011/02/27 PHP
Smarty模板简单配置与使用方法示例
2016/05/23 PHP
php微信开发之带参数二维码的使用
2016/08/03 PHP
mysql查找删除重复数据并只保留一条实例详解
2016/09/24 PHP
类似CSDN图片切换效果脚本
2009/09/17 Javascript
过虑特殊字符输入的js代码
2010/08/05 Javascript
js对象的比较
2011/02/26 Javascript
JS数组(Array)处理函数整理
2014/12/07 Javascript
JavaScript操作Oracle数据库示例
2015/03/06 Javascript
javascript从定义到执行 你不知道的那些事
2016/01/04 Javascript
Bootstrap每天必学之滚动监听
2016/03/16 Javascript
第六章之辅组类与响应式工具
2016/04/25 Javascript
微信小程序 教程之wxapp视图容器 swiper
2016/10/19 Javascript
jQuery的中 is(':visible') 解析及用法(必看)
2017/02/12 Javascript
详解使用angular-cli发布i18n多国语言Angular应用
2017/05/20 Javascript
JS实现京东商品分类侧边栏
2020/12/11 Javascript
python实现斐波那契递归函数的方法
2014/09/08 Python
使用基于Python的Tornado框架的HTTP客户端的教程
2015/04/24 Python
详解Python中open()函数指定文件打开方式的用法
2016/06/04 Python
python 循环遍历字典元素的简单方法
2016/09/11 Python
python 判断网络连通的实现方法
2018/04/22 Python
Python实现将多个空格换为一个空格.md的方法
2018/12/20 Python
pyqt5 禁止窗口最大化和禁止窗口拉伸的方法
2019/06/18 Python
浅谈Python中函数的定义及其调用方法
2019/07/19 Python
基于Python中的yield表达式介绍
2019/11/19 Python
python入门之基础语法学习笔记
2020/02/08 Python
python判断变量是否为列表的方法
2020/09/17 Python
C#基础面试题
2016/10/17 面试题
解决python 输出到csv 出现多空行的情况
2021/03/24 Python
《逃家小兔》教学反思
2014/02/23 职场文书
大学生两会精神学习心得体会
2014/03/10 职场文书
交通事故协议书范文
2014/04/16 职场文书
开展党的群众路线教育实践活动总结报告
2014/10/31 职场文书
幼儿园中班教师个人工作总结
2015/02/06 职场文书
2016年春节慰问信息
2015/03/25 职场文书
MySQL外键约束(FOREIGN KEY)案例讲解
2021/08/23 MySQL