关于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 相关文章推荐
wxPython框架类和面板类的使用实例
Sep 28 Python
简单介绍Python中的几种数据类型
Jan 02 Python
Python进度条实时显示处理进度的示例代码
Jan 30 Python
python实现淘宝秒杀聚划算抢购自动提醒源码
Jun 23 Python
Python爬虫之网页图片抓取的方法
Jul 16 Python
python中的插值 scipy-interp的实现代码
Jul 23 Python
Python实现统计英文文章词频的方法分析
Jan 28 Python
Python创建数字列表的示例
Nov 28 Python
python实现对变位词的判断方法
Apr 05 Python
Django2.1.7 查询数据返回json格式的实现
Dec 29 Python
pytorch下的unsqueeze和squeeze的用法说明
Feb 06 Python
Python如何让字典保持有序排列
Apr 29 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实现从ftp服务器上下载文件树到本地电脑的程序
2009/02/10 PHP
PHP通用检测函数集合
2011/02/08 PHP
php curl模拟post提交数据示例
2013/12/31 PHP
symfony2.4的twig中date用法分析
2016/03/18 PHP
PHP ADODB实现分页功能简单示例
2018/05/25 PHP
PHP从零开始打造自己的MVC框架之路由类实现方法分析
2019/06/03 PHP
php传值和传引用的区别点总结
2019/11/19 PHP
javascript显示隐藏层比较不错的方法分析
2008/09/30 Javascript
JS 跳转页面延迟2种方法
2013/03/29 Javascript
js图片实时加载提供网页打开速度
2014/09/11 Javascript
基于JavaScript实现动态创建表格和增加表格行数
2015/12/20 Javascript
Javascript实现图片懒加载插件的方法
2016/10/20 Javascript
BootStrap 获得轮播中的索引和当前活动的焦点对象
2017/05/11 Javascript
Vue2.0 实现歌手列表滚动及右侧快速入口功能
2018/08/08 Javascript
防止Layui form表单重复提交的实现方法
2019/09/10 Javascript
适合前端Vue开发童鞋的跨平台Weex的使用详解
2019/10/16 Javascript
详解Vue的组件中data选项为什么必须是函数
2020/08/17 Javascript
ant-design-vue 时间选择器赋值默认时间的操作
2020/10/27 Javascript
微信小程序反编译的实现
2020/12/10 Javascript
[02:17]快乐加倍!DOTA2食人魔魔法师至宝+迎霜节活动上线
2019/12/22 DOTA
12步入门Python中的decorator装饰器使用方法
2016/06/20 Python
分享一下如何编写高效且优雅的 Python 代码
2017/09/07 Python
python实现list由于numpy array的转换
2018/04/04 Python
详解Python_shutil模块
2019/03/15 Python
使用python画社交网络图实例代码
2019/07/10 Python
python实现tail实时查看服务器日志示例
2019/12/24 Python
python 轮询执行某函数的2种方式
2020/05/03 Python
Django与pyecharts结合的实例代码
2020/05/13 Python
Python从MySQL数据库中面抽取试题,生成试卷
2021/01/14 Python
中粮集团旗下食品网上购物网站:我买网
2016/09/22 全球购物
优秀家长事迹材料
2014/05/17 职场文书
企业与个人合作经营协议书
2014/11/01 职场文书
十岁生日答谢词
2015/01/05 职场文书
个人求职信格式范文
2015/03/20 职场文书
python 爬取京东指定商品评论并进行情感分析
2021/05/27 Python
Linux安装Docker详细教程
2022/07/07 Servers