如何用一行Python代码实现避免重复调用heavy_computation()的条件赋值?
一行Pythonic写法实现逻辑(避免重复调用函数)
当然可以实现,Python 3.8及以上版本提供的**赋值表达式(海象运算符:=)**就是最优解,既能只调用一次heavy_computation(),又保持代码简洁可读:
x = val if (val := heavy_computation()) > 0 else None
说明:
val := heavy_computation()会先执行耗时的计算,将结果赋值给val,同时把这个值传递给后续的判断条件- 整个逻辑在一行内完成,完全避免了重复调用函数的问题,代码可读性也远超嵌套技巧
如果你的Python版本低于3.8(不支持海象运算符),也可以用生成器表达式实现一行写法,但可读性稍差:
x = next((val for val in [heavy_computation()] if val > 0), None)
不过优先推荐海象运算符的写法,它是专门为这类"先赋值再判断"的场景设计的,最符合Python的简洁风格。
内容的提问来源于stack exchange,提问作者Federico Taschin
相关产品推荐
相关产品推荐

