0

我有这个代码结构:

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

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

4

2 回答 2

4
while True:
    do_something()
    if some_condition: break

或者

while not some_condition:
    do_something()

要使第二个选项等效于第一个选项,some_condition必须启动,因为False这样do_something()至少会被调用一次。

于 2013-06-20T13:36:20.933 回答
1
def late(cond):
    yield None
    while cond(): yield None

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

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

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

于 2013-06-20T13:57:04.290 回答