如何在Python一行中赋值相互依赖的多个变量?
Python一行内基于刚赋值的变量完成多变量赋值
原代码a, b, c = 1, 2, a+b无法运行的核心原因是:Python多重赋值会先计算右侧所有表达式的值,再统一赋值给左侧变量。计算a+b时,a和b还没被绑定到新值,自然会触发NameError。
下面提供两种符合要求的实现方式:
方式1:使用赋值表达式(Python 3.8+)
Python 3.8引入的海象运算符:=允许在表达式内部完成变量赋值,让后续表达式能直接使用刚定义的变量:
a, b, c = (a := 1), (b := 2), a + b
执行时,a := 1会立即把1赋值给a,b := 2同理,所以后面的a + b能正确算出3,最终得到a=1、b=2、c=3。
方式2:借助辅助函数(全版本兼容)
如果需要适配Python 3.8之前的版本,可以用一个辅助函数封装计算逻辑,再通过一行赋值解包返回值:
# 匿名函数写法(更紧凑) a, b, c = (lambda: (1, 2, 1+2))() # 命名函数写法(更易读) def get_values(): x, y = 1, 2 return x, y, x + y a, b, c = get_values()
函数内部先完成x、y的赋值和依赖计算,再一次性返回所有结果,完美满足一行赋值且不用分号的要求。
内容的提问来源于stack exchange,提问作者TRCK
相关产品推荐
相关产品推荐

