在长语句中省略重复

时间:2018-10-19 20:55:18

标签: python python-3.x

我有一个很长的声明:

if LongClassName.results[variable1][longerVariable2][variable3] == 0:
   LongClassName.results[variable1][longerVariable2][variable3] = 42

正如人们可以清楚地看到的那样,这段代码中有很多重复(在条件及其主体中使用相同的表达式)。有没有一种简化的方法?在C ++中,我可以使用如下引用:

auto &ref = LongClassName.results[variable1][longerVariable2][variable3];
if (ref == 0) {
    ref = 42;
}

简化此表达式的Python方法是什么?

3 个答案:

答案 0 :(得分:2)

您可以在此位置上停下来并获取参考:

Date eot = Date.valueOf(LocalDate.of(9999, Month.DECEMBER, 31));

并不是特别Pythonic,但这是最接近原始partial_ref = LongClassName.results[variable1][longerVariable2] if partial_ref[variable3] == 0: partial_ref[variable3] = 42 代码的。

答案 1 :(得分:2)

您可以在某种程度上将其缩短:

container = LongClassName.results[variable1][longerVariable2]
if container[variable3] == 0:
   container[variable3] = 42

Python不像C ++那样具有完全通用的引用,因此这会为variable3的容器创建一个较短的名称,并在后续语句中使用其名称。

答案 2 :(得分:-1)

x = LongClassName.results[variable1][longerVariable2]
if x[variable3] == 0:
   x[variable3] = 42

可以,但是看起来不太优雅。