python 中连续=号的运算顺序
再次python中不小心输入了下面的语句a=b=3
居然是可以操作的然后显示a为3 b 也为3
但是a=3=3 确是不行的。
他的运算顺序是什么样的, 是先把3赋值给b 再把 b的值赋值给a 吗? 因为如果是从左向右的顺序的话就一定会报错了
本帖最后由 jackz007 于 2022-10-20 15:17 编辑
a = 3 = 3 要求被赋值的对象必须是标识符(变量),在这里,a 和 红色的 3 都应该是被赋值对象,可是,红色的 3 是常数,不是变量,所以报错。 a=b=3确实是可以的,因为变量a,b均建立了和整数3之间的引用,所以说你修改a,并不会对b的值造成影响
但a=3=3,python在读取该式子时会在全局域中寻找变量名为3的变量,但变量名不能数字开头的,是个非法命名所以报错
我是这么理解的 jackz007 发表于 2022-10-20 15:16
a = 3 = 3 要求被赋值的对象必须是标识符(变量),在这里,a 和 红色的 3 都应该是被赋值对象,可 ...
我也是这样理解的但是我就是想知道
a=b=3 程序是如何运行的 是先做b=3 然后再做a=b 这个运算顺序吗?
原本我的思路是b=3 并不会有返回值, 这样的话再a=一个没有返回值的对象的话因该 返回None paulwang 发表于 2022-10-20 17:47
我也是这样理解的但是我就是想知道
a=b=3 程序是如何运行的 是先做b=3 然后再做a=b 这个运算顺序吗?
...
没有顺序,最后那个等号右边的表达式同时给所有的变量赋值,就是这么简单。
页:
[1]