空值合并
空值合并运算符乍一看与 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/