更好的写作方式:a = b如果a是None,则为

时间:2016-01-21 23:13:30

标签: python

我在Python中反复使用的一个非常常见的句子感觉“太长”,我希望有更多的Pythonic方法来编写它:

a = b if a is None else a

有没有更好的方法来写这个?

5 个答案:

答案 0 :(得分:6)

典型的快捷方式是

a = a or b

但是,这只会测试a评估为False0FalseNone''等。将a设置为b

答案 1 :(得分:3)

你可以......

if a is None: 
     a = b

对我来说似乎有点清洁,你不必为自己分配一个变量。

答案 2 :(得分:1)

标准方法是短路:

a = a or b

然而,如果您认为只需要替换它None,这就很危险。例如,如果您希望保留a的值False,则此方法将无法完全按照您的意愿执行。

比原来短的短语,但是相当丑陋的短语是

a = [a, b][a is None]

不推荐使用,可能会给读者带来一些令人费解的想法,但在引入内联if ... else ...语法

之前,这是一种常见的方法

答案 3 :(得分:0)

肯定有:短路。

a = a or b

答案 4 :(得分:-1)

尝试

a = a or b

Python执行短路评估,因此如果a求值为True(任何非零整数或浮点数,非空列表,非空字符串等),则a的值返回并且不被评估。但是,如果a == None,则评估为False,因此解释程序还必须评估b。如果b评估为True,则会将其作为答案返回。如另一个答案所述,有几个案例需要注意。