【发布时间】:2021-12-16 15:31:42
【问题描述】:
我经常会有这样的任务:
data = {
'a': var_a if var_a is not None else default_a,
...
}
这有点冗长。我认为这可以缩短为
data = {
'a': var_a or default_a,
...
}
至少如果我知道 var_a 不会采用像 0 或 [] 这样的值。
使用这种较短的符号有什么缺点吗?
【问题讨论】:
-
如果
var_a是False,我猜会分配None吗?也许它会和 0 一样? -
@xdurch0 $ python3 -c "print(None or 'abc')" -- 输出:abc
-
曾几何时,您不得不写
var_a or default_a,然后找出导致它失败的异常并解决它们。... if ... else ...被添加到语言中以解决该问题。你走错了方向:) -
如果PEP-505 获得批准,您就可以写
var_a ?? default_a。 (不过,请不要屏住呼吸。)请参阅discuss.python.org/t/pep-505-status/4612/10,了解为什么该提案被推迟而不是被拒绝。
标签: python