在Python中使用Bash $ {var:-default}等价物?

时间:2015-01-29 11:57:51

标签: python

执行默认变量替换的最简单方法是什么?

x = None
... (some process which may set x)
if x is None: use_x = "default"
else:         use_x = x

有没有办法在一行中写这个?

2 个答案:

答案 0 :(得分:10)

您可以使用conditional expression

use_x = "default" if x is None else x

你可以使用dict默认为x,如果该键不存在以类似于bash语法但条件将是惯用的方式:

use_x = {None: "default"}.get(x, x)

答案 1 :(得分:4)

您可以使用

x = x or "default"
在Python中

。这不完全相同,因为它依赖于truth values的Python定义,这与Bash对set和unset值的区别不同。但这是一个近似的近似和惯用的 Python方法,解决了测试未设置值的相同的一般问题。

如果您特别只对替换None值感兴趣,那么此代码将产生错误的结果,而Padraic的解决方案更合适。