空值合并
空值合并运算符乍一看与 or 运算很像,但 a or b 等价于 a if a else b,而 a ?? b 等价于 a if a is None else b。两者之间的区别在于,a ?? b 仅判断空值(None),而 a or b 则判断所有的假值(如:""、False、0、[]、{} 等)。
语法
1 | |
优先级
?? 与 or 优先级一致。
注意
?? 与 or 之间的优先级未确定,故而不能直接链式使用。当你想让 ?? 和 or 出现在同一个表达式里,那么你需要给它们外面加上括号,否则会出现抛出一个语法错误。
1 2 3 | |
参考
- https://peps.python.org/pep-0505/