You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中是否存在类似Perl//的非None判定条件运算符?

Python 中类似 Perl // 运算符的实现方案

有的,在Python 3.8及以上版本,可以借助海象运算符(:=)来实现你要的功能——既严格区分None和其他假值(比如False、0、""等),又能保证a和b这类计算成本高的表达式只被执行一次:

# 假设 expensive_a() 和 expensive_b() 是计算成本高的表达式
result = (a := expensive_a()) if a is not None else expensive_b()

这个写法的逻辑是:

  • 先执行expensive_a(),把结果赋值给a
  • 判断a是否为None:如果不是,直接返回a;如果是,执行expensive_b()并返回其结果

如果你需要更简洁的复用写法,也可以封装成一个简单函数(同样保证操作数只计算一次):

def null_coalesce(a_func, b_func):
    a = a_func()
    return a if a is not None else b_func()

# 使用时传入表达式的lambda包装
result = null_coalesce(lambda: expensive_a(), lambda: expensive_b())

这样就完全匹配需求:仅当第一个操作数为None时才计算第二个操作数,且两个操作数都只执行一次,同时严格区分None和其他假值。

内容的提问来源于stack exchange,提问作者Zbynek Vyskovsky - kvr000

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 11:34:55