关于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新手在作用域方面经常容易碰到的问题
Apr 03 Python
Python代码调试的几种方法总结
Apr 15 Python
详解python中的json的基本使用方法
Dec 21 Python
Python学习小技巧之列表项的拼接
May 20 Python
详解用Python处理HTML转义字符的5种方式
Dec 27 Python
TensorFlow利用saver保存和提取参数的实例
Jul 26 Python
Python实现图片转字符画的代码实例
Feb 22 Python
关于python3中setup.py小概念解析
Aug 22 Python
python调用matplotlib模块绘制柱状图
Oct 18 Python
Python操作注册表详细步骤介绍
Feb 05 Python
离线状态下在jupyter notebook中使用plotly实例
Apr 24 Python
Python如何将装饰器定义为类
Jul 30 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
提问的智慧
2006/10/09 PHP
用cookies来跟踪识别用户
2006/10/09 PHP
php利用反射实现插件机制的方法
2015/03/14 PHP
最近项目写了一些js,水平有待提高
2009/01/31 Javascript
javascript loadScript异步加载脚本示例讲解
2013/11/14 Javascript
jquery的ajax跨域请求原理和示例
2014/05/08 Javascript
table insertRow、deleteRow定义和用法总结
2014/05/14 Javascript
jQuery实时显示鼠标指针位置和键盘ASCII码
2016/03/28 Javascript
jQuery原理系列-常用Dom操作详解
2016/06/07 Javascript
第十篇BootStrap轮播插件使用详解
2016/06/21 Javascript
javascript  数组排序与对象排序的实例
2017/07/17 Javascript
Bootstrap Table 搜索框和查询功能
2017/11/30 Javascript
详解如何优雅地在React项目中使用Redux
2017/12/28 Javascript
vue引用js文件的多种方式(推荐)
2018/05/17 Javascript
详解Angularjs 自定义指令中的数据绑定
2018/07/19 Javascript
vue中使用vue-cli接入融云实现即时通信
2019/04/19 Javascript
vue实现微信分享链接添加动态参数的方法
2019/04/29 Javascript
JS事件流与事件处理程序实例分析
2019/08/16 Javascript
[02:12]DOTA2英雄基础教程 变体精灵
2013/12/16 DOTA
[02:45]2016年中国刀塔全程回顾,完美“圣”典即将上演
2016/12/15 DOTA
python下载文件时显示下载进度的方法
2015/04/02 Python
linux下python抓屏实现方法
2015/05/22 Python
Python常用的内置序列结构(列表、元组、字典)学习笔记
2016/07/08 Python
python微信公众号之关键词自动回复
2018/06/15 Python
浅谈Pandas Series 和 Numpy array中的相同点
2019/06/28 Python
python字符串Intern机制详解
2019/07/01 Python
python基于Selenium的web自动化框架
2019/07/14 Python
python基于gevent实现并发下载器代码实例
2019/11/01 Python
python实现人像动漫化的示例代码
2020/05/17 Python
使用tensorflow进行音乐类型的分类
2020/08/14 Python
5分钟快速掌握Python定时任务框架的实现
2021/01/26 Python
美国顶级防滑鞋:Shoes For Crews
2017/03/27 全球购物
企业内控岗位的职责
2014/02/07 职场文书
党政领导班子四风问题对照检查材料思想汇报
2014/10/02 职场文书
合伙开公司协议书范本
2014/10/28 职场文书
单位考核聘任报告
2015/03/02 职场文书