Python中如何在断言消息中直接引用断言表达式的结果?
解决方案
Python本身并没有你设想的%0、%1这种直接绑定比较表达式结果的语法,但可以用海象运算符(Python 3.8及以上版本支持)实现一行式的需求,不用提前单独赋值:
assert (x_val := 你的复杂长表达式x) == (y_val := 你的复杂长表达式y), f"Ensure x {x_val} is equal to y {y_val}."
原理很简单:海象运算符:=允许你在计算表达式的同时,把结果赋值给变量,这样在同一个断言语句里,你就能直接在f-string里引用这些变量,避免重复书写冗长的表达式。
要是你用的是Python 3.8以下的版本,那确实没办法在一行里完全避免重复表达式,只能提前赋值后再写断言。
内容的提问来源于stack exchange,提问作者Fabian
相关产品推荐
相关产品推荐

