关于python多重赋值的小问题

作者:JEWELCCL 时间:2023-08-04 06:38:16 

前言

今天无意中发现在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 是完全不正确的。

来源:https://blog.csdn.net/JewelCCL/article/details/79187469

标签:python,多重,赋值
0
投稿

猜你喜欢

  • MySQL如何修改字段的默认值和空值

    2024-01-16 16:57:22
  • Pandas提取单元格的值操作

    2022-10-19 08:34:21
  • Python 在局部变量域中执行代码

    2023-06-12 04:57:15
  • 如何学习Python time模块

    2023-07-30 17:14:59
  • NumPy之矩阵向量线性代数等操作示例

    2022-12-08 13:33:14
  • Python文件的应用之序列化与反序列化详解

    2021-06-19 22:20:45
  • mysql ON DUPLICATE KEY UPDATE语句示例

    2024-01-13 11:02:48
  • TensorFlow内存管理bfc算法实例

    2023-09-08 21:42:24
  • Django结合ajax进行页面实时更新的例子

    2023-02-14 21:15:45
  • 用户界面设计中“状态”和“动作”的表达

    2011-01-06 12:36:00
  • go解析svn log生成的xml格式的文件

    2024-03-13 15:13:34
  • Python 线程池模块之多线程操作代码

    2022-06-14 06:01:47
  • 再读《你是一个职业的页面重构工作者吗?》

    2009-02-11 12:22:00
  • pytorch中的自定义数据处理详解

    2023-08-21 09:31:35
  • 浅谈Pycharm调用同级目录下的py脚本bug

    2023-09-12 15:39:27
  • SQL 特殊语句(学习笔记)

    2012-06-06 19:51:33
  • pytorch使用horovod多gpu训练的实现

    2022-01-07 16:01:18
  • 关于Vue的异步组件

    2024-05-09 10:52:35
  • Python绘制数据图表的超详细教程

    2021-03-05 01:54:36
  • Python监听键盘和鼠标事件的示例代码

    2022-06-14 07:05:23
  • asp之家 网络编程 m.aspxhome.com