我有这个代码构造:
flag = True
while flag:
do_something()
if some_condition:
flag = False
这是最好的方法吗?还是有更好的pythonic方式?
答案 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()
。