现在的位置: 首页 > 综合 > 正文

关于learning python 中多目标赋值 的不同看法

2018年06月09日 ⁄ 综合 ⁄ 共 486字 ⁄ 字号 评论关闭

呵呵,第一次写博客,有点紧张!

最近开始学python,所以去网上找了《learning python 3rd》的中文版看(对不起英语老师啊),发现第242页关于多目标赋值语句的解释不是很正确!

有图有真相

貌似看起来没问题,但是有疑心病的我,果断测试了下

a,b=b,a=10,20
a,b
(20,10)

结果出乎书本作者的意料

按照作者的思路

应该是这样的:

b,a=10,20

a,b=b,a

那么a,b 的结果应该是(10,20)

再测试

a,b=10,20
a,b=b,a=a+b,b
a,b
(20,30)

如果那作者思路,应该是

b,a=30,20

a,b=b,a

那么a,b 的结果应该是(30,20)

跟实际结果完全相反!

所以,我猜想,应该是这样赋值的,(a,b=10,20)a先指向对象10,b先指向对象20,然后(b,a = 10,20)a指向20,b指向10

所以最后的结果是,a,b ( 20 ,10)

同理,先是将a+b,b的结果是对象30,20,然后从左往后,a先指向30,b先指向20,然后a又指向20,b又指向30,

所以结果为a,b(20,30)

以上观点是本人的拙见,希望各位高手能发表发表自己的观点!

抱歉!评论已关闭.