如果/ yield cascade - 如何使更简洁?

时间:2014-10-06 19:32:03

标签: python if-statement yield

我在一个函数中有很多连续的语句,如下所示:

if condition1:
  yield x
else:
  yield None

if condition2:
  yield y
else:
  yield None

...

有没有办法让这种代码更简洁?

1 个答案:

答案 0 :(得分:4)

使用conditional expressions会使其更简洁:

yield x if condition1 else None
yield y if condition2 else None

或者如果您有很多(价值,条件)对,并且不介意预先评估所有条件:

for val, cond in [(x, condition1), (y, condition2)]:yield val if cond else None

注意:第二部分答案因以下评论中给出的原因而受到影响。