Python中如何不使用续行符拆分链式赋值长行?
无需续行符拆分链式赋值长行的方法
嘿,这个问题确实有点 tricky,不过好在有几种可行的方式,完全不用依赖续行符 \:
方法1:利用赋值表达式(海象运算符 :=)
Python 3.8及以上版本支持的赋值表达式可以帮你把链式赋值放进括号里换行,完美解决这个问题。具体写法如下:
long_variable_name = another_long_name = ( a_third_name := some_func() )
这个写法和你原来的链式赋值完全等价:some_func()只会执行一次,三个变量都会被赋值为它的返回值。括号里的赋值表达式a_third_name := some_func()会返回函数的结果,所以外层的两个赋值依然能拿到这个值,同时a_third_name也被正确赋值了。
方法2:拆分为独立赋值语句(兼容所有Python版本)
如果你用的是Python 3.8以下的版本,没法用海象运算符,那最稳妥的方式就是把链式赋值拆成多行独立的赋值语句。虽然看起来不是“链式”的形式,但逻辑和效果完全一致:
a_third_name = some_func() another_long_name = a_third_name long_variable_name = another_long_name
这种写法兼容性拉满,可读性也不差——一眼就能看出来三个变量都指向同一个值,some_func()同样只会执行一次,和链式赋值的核心逻辑没有区别。
需要补充的是,你之前尝试用普通括号包裹中间赋值的思路行不通,是因为Python里的赋值语句不属于表达式,不能放在括号里作为值传递,这就是那些写法报语法错误的原因。
内容的提问来源于stack exchange,提问作者nonagon
相关产品推荐
相关产品推荐

