Python中如何在单行实现多个连续计算赋值操作?
语法报错原因
你尝试的x /= 2 += 1 *= 5写法天生无法在Python中运行,核心原因是:
/=、+=、*=这类带赋值功能的运算符都属于语句而非可串联的普通表达式,Python语法层面就不允许多个赋值语句直接顺着同一个变量连续拼接- 就算靠括号、海象运算符
:=强行凑出可运行的代码,逻辑也会非常绕,可读性极差,完全没有实用价值
可行实现
逐行写法(生产环境首选)
这是最符合Python编码规范的方案,逻辑一目了然,后续改逻辑、调bug都很方便:
x /= 2 x += 1 x *= 5
单行表达式写法
如果需要把逻辑压缩到一行,可以直接按照运算顺序合并为算术表达式再赋值,计算结果和逐行写法完全一致:
x = (x / 2 + 1) * 5
避坑提醒
不要为了追求"链式调用"的形式硬写炫技代码,比如靠海象运算符、元组解包凑出来的类似下面的写法,除了增加代码维护成本之外没有任何意义:
# 反面教材,禁止在实际项目里写 x = (x := x/2, x := x+1, x*5)[-1]
内容的提问来源于stack exchange,提问作者roble
相关产品推荐
相关产品推荐

