Man*_*ert 2 python design-patterns do-while
我经常需要随机生成具有某些约束的东西.在许多情况下,忽略生成中的约束更快,检查它们是否在之后得到满足,否则重做该过程.缺少do关键字,我经常写
r = random_stuff()
while not meets_condition(r):
r = random_stuff()
Run Code Online (Sandbox Code Playgroud)
这有点难看,因为我有两次相同的代码行.我真正想要的是一个类似的结构
r = random_stuff() until meets_condition(r)
Run Code Online (Sandbox Code Playgroud)
类似于2.5中引入的三元运算符:
a = b if condition else c
Run Code Online (Sandbox Code Playgroud)
只是在执行语句的左侧之前评估此条件.有没有人建议设计模式(应该在Python 2.7中工作)来补救 - while构造内在的unpythonic丑陋?
while True:
r = random_stuff()
if meets_condition(r):
break
Run Code Online (Sandbox Code Playgroud)
要么
condition = True
while condition:
r = random_stuff()
condition = not meets_condition(r)
Run Code Online (Sandbox Code Playgroud)