Pythonic这样做的方式?

时间:2013-06-20 13:35:10

标签: python coding-style pep

我有这个代码构造:

flag = True
while flag:
    do_something()
    if some_condition:
        flag = False

这是最好的方法吗?还是有更好的pythonic方式?

2 个答案:

答案 0 :(得分:4)

while True:
    do_something()
    if some_condition: break

while not some_condition:
    do_something()

要使第二个选项与第一个选项等效,some_condition必须以False开头,因此do_something()至少会被调用一次。

答案 1 :(得分:1)

def late(cond):
    yield None
    while cond(): yield None

for _ in late(lambda: condition):
    do_something()

看起来很奇怪。这里发生了什么?

late()生成器forst产生一个值,以便无条件地进入循环。在每个连续的循环运行中,都会检查cond()