查看: 178|回复: 0

[札记] 一个很逗的赋值方式

[复制链接]

415

主题

603

帖子

4607

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4607
发表于 2017-8-15 09:57:10 | 显示全部楼层 |阅读模式
起初我们是这样赋值的:
  1. a = 1

  2. b = 2

  3. a, b = b, b+a

  4. print a, b
复制代码
结果是这样的:
2017-08-15_094845.png
表面看上去,毫无疑问,但是我们深入一想就会发现问题,但是当我们把这个问题拆分开之后,代码如下:
  1. a = 1

  2. b = 2

  3. # a, b = b, b+a

  4. tmp = a
  5. a = b
  6. b = tmp+b

  7. print a, b
复制代码
结果如下:
2017-08-15_095127.png
当然,上面是正确的代码,我们拿这个正确的代码再来说一下,最上面的例子,为什么在上面的例子中,b = a+b 中的A已经等于B了,而结果却跟下面的相同,如果根据我们下面的代码思路最后a应该为“2”,而b应该为“4”,但实际结果却是2,3


这其中的原因是运算结果的问题,当a, b = b, b+a 时,以等号分为左右两边,赋值时需要先将结果计算出来再时行赋值。所以赋值时,实际上是a, b = 2, 3
,所以这里也就解释了上面的问题。

选一人白头,择一城终老
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

!jz_fbzt! !jz_sgzt! !jz_xgzt! 快速回复 !jz_sctz! !jz_fhlb!
快速回复 返回顶部 返回列表