Python 3.11中是否有简化非None取值代码的类似方法?
Python 3.11 简化非空判断的写法
针对你提到的safe_value = value if value is not None else default这段代码,Python 3.11里并没有像字典get()方法那样专门的内置语法或函数直接简化,但可以通过以下几种方式实现更简洁的写法:
- 分场景使用
or运算符:如果你的value不会是其他布尔假值(比如0、空字符串""、空列表[]这类),可以用safe_value = value or default。但要注意,这个写法和原逻辑不完全等价——原代码只排除None,而or会把所有布尔值为False的对象都替换成default。 - 调整三元表达式顺序:把条件换个顺序,写成
safe_value = default if value is None else value,写法上稍微紧凑一点,本质还是三元表达式,但阅读起来更顺畅。 - 封装自定义函数:如果需要频繁复用这个逻辑,完全可以自己封装一个类似字典
get()的函数,复用性拉满:
之后直接用def get_safe(value, default): return value if value is not None else defaultsafe_value = get_safe(value, default)调用,和字典get()的使用逻辑一致,简洁又清晰。
另外提一句,Python 3.10+新增的match语句也能实现,但写起来反而更啰嗦,完全没必要用在这里:
match value: case None: safe_value = default case _: safe_value = value
内容的提问来源于stack exchange,提问作者user357269
相关产品推荐
相关产品推荐

