Python中是否存在类似JavaScript ? 可选链(空值返回)的等价操作符?
问题解答
你提到的JavaScript操作符官方名称为可选链操作符,Python目前没有内置的完全等价的语法糖,但可以通过以下几种方式实现相同效果:
- 原生if判断(最推荐,可读性最高,无额外开销)
# 仅判断真值的写法,和你原有逻辑一致 if player: player.draw(image) # 仅过滤None的写法,和JS可选链逻辑完全对齐(JS可选链仅跳过null/undefined) if player is not None: player.draw(image)
- 单行条件表达式(适合简短逻辑,效果和可选链完全一致)
# 真值判断版本 player.draw(image) if player else None # 仅过滤None版本 player.draw(image) if player is not None else None
- 多层属性/方法调用场景的替代方案
如果需要实现类似JSa?.b?.c?.func()的多层可选调用,可以用getattr嵌套实现:
getattr(getattr(getattr(a, "b", None), "c", None), "func", lambda _: None)(image)
该写法可读性较差,多层场景更推荐拆分为多层if判断实现。
内容的提问来源于stack exchange,提问作者Dirk Hoekstra
相关产品推荐
相关产品推荐

