鱼C论坛

 找回密码
 立即注册
查看: 3938|回复: 4

python 中连续=号的运算顺序

[复制链接]
发表于 2022-10-20 14:41:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
再次python中不小心输入了下面的语句
a=b=3
居然是可以操作的然后显示a为3 b 也为3
但是a=3=3 确是不行的。

他的运算顺序是什么样的, 是先把3赋值给b 再把 b的值赋值给a 吗? 因为如果是从左向右的顺序的话就一定会报错了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-20 15:16:06 | 显示全部楼层
本帖最后由 jackz007 于 2022-10-20 15:17 编辑

        a = 3 = 3 要求被赋值的对象必须是标识符(变量),在这里,a 和 红色的 3 都应该是被赋值对象,可是,红色的 3 是常数,不是变量,所以报错。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-20 15:36:09 | 显示全部楼层
a=b=3确实是可以的,因为变量a,b均建立了和整数3之间的引用,所以说你修改a,并不会对b的值造成影响

但a=3=3,python在读取该式子时会在全局域中寻找变量名为3的变量,但变量名不能数字开头的,是个非法命名所以报错

我是这么理解的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2022-10-20 17:47:01 | 显示全部楼层
jackz007 发表于 2022-10-20 15:16
a = 3 = 3 要求被赋值的对象必须是标识符(变量),在这里,a 和 红色的 3 都应该是被赋值对象,可 ...

我也是这样理解的但是我就是想知道
a=b=3 程序是如何运行的 是先做b=3 然后再做a=b 这个运算顺序吗?
原本我的思路是b=3 并不会有返回值, 这样的话再a=一个没有返回值的对象的话因该 返回None
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-20 18:05:30 | 显示全部楼层
paulwang 发表于 2022-10-20 17:47
我也是这样理解的但是我就是想知道
a=b=3 程序是如何运行的 是先做b=3 然后再做a=b 这个运算顺序吗?
...

        没有顺序,最后那个等号右边的表达式同时给所有的变量赋值,就是这么简单。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-25 09:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表