关于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 不同对象比较大小示例探讨
Aug 21 Python
Python如何实现MySQL实例初始化详解
Nov 06 Python
一道python走迷宫算法题
Jan 22 Python
使用Python和Scribus创建一个RGB立方体的方法
Jul 17 Python
Django实现发送邮件找回密码功能
Aug 12 Python
Python实现二叉树的最小深度的两种方法
Sep 30 Python
Python API自动化框架总结
Nov 12 Python
python 中的[:-1]和[::-1]的具体使用
Feb 13 Python
Python编程快速上手——Excel到CSV的转换程序案例分析
Feb 28 Python
Python的PIL库中getpixel方法的使用
Apr 09 Python
python如何求100以内的素数
May 27 Python
Python在线和离线安装第三方库的方法
Oct 31 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动态分页函数,PHP开发分页必备啦
2011/11/07 PHP
PHPExcel简单读取excel文件示例
2016/05/26 PHP
PHP var关键字相关原理及使用实例解析
2020/07/11 PHP
如何使用json在前后台进行数据传输实例介绍
2013/04/11 Javascript
Jquery和JS用外部变量获取Ajax返回的参数值的方法实例(超简单)
2013/06/17 Javascript
js使用栈来实现10进制转8进制与取除数及余数
2014/06/11 Javascript
jQuery中animate动画第二次点击事件没反应
2015/05/07 Javascript
基于BootStrap Metronic开发框架经验小结【四】Bootstrap图标的提取和利用
2016/05/12 Javascript
JS正则表达式之非捕获分组用法实例分析
2016/12/28 Javascript
微信小程序 高德地图路线规划实现过程详解
2019/08/05 Javascript
python 中文字符串的处理实现代码
2009/10/25 Python
在Python中使用Neo4j数据库的教程
2015/04/16 Python
Python合并多个装饰器小技巧
2015/04/28 Python
python自定义异常实例详解
2017/07/11 Python
Python中进程和线程的区别详解
2017/10/29 Python
python通过getopt模块如何获取执行的命令参数详解
2017/12/29 Python
python3 http提交json参数并获取返回值的方法
2018/12/19 Python
详解django+django-celery+celery的整合实战
2019/03/19 Python
win8.1安装Python 2.7版环境图文详解
2019/07/01 Python
浅谈PyTorch的可重复性问题(如何使实验结果可复现)
2020/02/20 Python
python plt可视化——打印特殊符号和制作图例代码
2020/04/17 Python
Python爬虫:Request Payload和Form Data的简单区别说明
2020/04/30 Python
vivo智能手机官方商城:vivo
2016/09/22 全球购物
Oral-B荷兰:牙医最推荐的品牌
2020/02/25 全球购物
八年级音乐教学反思
2014/01/09 职场文书
中学生获奖感言
2014/02/04 职场文书
教师试用期自我鉴定
2014/02/12 职场文书
春节晚会主持词
2014/03/24 职场文书
《最大的麦穗》教学反思
2014/04/17 职场文书
建筑安全生产目标责任书
2014/07/23 职场文书
就业协议书
2014/09/12 职场文书
聘任通知书
2015/09/21 职场文书
初中语文教师研修日志
2015/11/13 职场文书
Python实现简单的猜单词
2021/06/15 Python
js基础语法与maven项目配置教程案例
2021/07/15 Javascript
JavaScript流程控制(分支)
2021/12/06 Javascript