n = n_ = max(round(n * gd), 1) if n > 1 else n # depth gain
Python 使用链式赋值将同一个值同时赋给多个变量。这意味着 n 和 n_ 会同时接收相同的结果值。我们可以将这行代码逐步拆解,以便理解传值的顺序和方法:
逐步解析
先计算右侧表达式的值:
右侧的表达式 max(round(n * gd), 1) if n > 1 else n 会首先被求值。
如果 n > 1,计算 round(n * gd),然后使用 max 函数确保值至少为 1。
如果 n <= 1,则直接返回 n 的值。
将右侧表达式的结果赋值给 n_ 和 n:
计算结果会先赋值给 n_,然后再赋值给 n。
因为 Python 从右到左的链式赋值特性,最终 n_ 和 n 得到的是同一个值。
链式赋值传值过程
在链式赋值中,例如 a = b = c:
计算 c 的值。
将 c 的值赋给 b,然后再将 b 的值赋给 a。
因此,n = n_ = … 中,最终 n_ 和 n 得到相同的值。