Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python中的Bash${var:-default}等价物?_Python - Fatal编程技术网

Python中的Bash${var:-default}等价物?

Python中的Bash${var:-default}等价物?,python,Python,执行默认变量替换的最简单方法是什么 x = None ... (some process which may set x) if x is None: use_x = "default" else: use_x = x 有没有办法把这写在一行上?你可以用 x = x or "default" 在Python中。这并不完全相同,因为它取决于的Python定义,这不同于Bash对set和unset值的区分。但这是一种近似的、惯用的Python方法,可以解决测试未设置值的一般问题

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

x = None
... (some process which may set x)
if x is None: use_x = "default"
else:         use_x = x
有没有办法把这写在一行上?

你可以用

x = x or "default"
在Python中。这并不完全相同,因为它取决于的Python定义,这不同于Bash对set和unset值的区分。但这是一种近似的、惯用的Python方法,可以解决测试未设置值的一般问题

如果您特别想只替换
None
值,则此代码将产生错误的结果,Padraic的解决方案更合适。

您可以使用:

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

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

这不是同一件事,在python的布尔上下文中,很多事情都被认为是错误的。这可能有用,但首先你必须要求澄清。@KarolyHorvath虽然我同意它们不一样,但这是解决同一问题的惯用方法。我认为它在实践中比理论上的讨论更有帮助。事实上,如果x等于0,这将不起作用。我真的想检查无值
use_x = {None: "default"}.get(x, x)