我有一个很长的声明:
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方法是什么?
答案 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
可以,但是看起来不太优雅。