如何解决 python 中的 go-to?
how to work around go-to in python?
我有一个场景,我在一组操作后调用了特定的代码块。我在 Python 中使用了 go-to
和 label
。它按预期工作。
还有其他更好的选择吗?
这是 Python 使用 Squish-for-QT 的自动化代码。
label .mylabel
while (cond1):
print("inside cond1")
Function1(x,y,z)
else:
if (object.exists("obj1")):
Screen1 = waitForObject("obj1")
print ("Inside Screen1")
while (Screen1.visible):
Function1(a,b,c)
else:
goto .mylabel
您可以将上面的代码定义到一个函数中,并像这样使用一些基本的递归
def action():
while (cond1):
print("inside cond1")
Function1(x,y,z)
else:
if (object.exists("obj1")):
Screen1 = waitForObject("obj1")
print ("Inside Screen1")
while (Screen1.visible):
Function1(a,b,c)
else:
action()
一般使用递归是比较常见的地方。希望这有帮助
在这种特殊情况下,将整个事物包装在 while True
中将实现相同的行为:
while True:
while (cond1):
print("inside cond1")
Function1(x,y,z)
else:
if (object.exists("obj1")):
Screen1 = waitForObject("obj1")
print ("Inside Screen1")
while (Screen1.visible):
Function1(a,b,c)
else:
break
逐个检查此分支:
如果cond1满足,我们继续执行Function1(x, y, z)
一旦cond1不满足,就陷入else
如果 obj1 存在,我们等待 obj1,否则,我们跳出 while True 循环。
等到obj1后,我们继续运行Function1(a,b,c) while Screen1可见,然后回到while True循环的开头(和原来的goto一致) .
我有一个场景,我在一组操作后调用了特定的代码块。我在 Python 中使用了 go-to
和 label
。它按预期工作。
还有其他更好的选择吗?
这是 Python 使用 Squish-for-QT 的自动化代码。
label .mylabel
while (cond1):
print("inside cond1")
Function1(x,y,z)
else:
if (object.exists("obj1")):
Screen1 = waitForObject("obj1")
print ("Inside Screen1")
while (Screen1.visible):
Function1(a,b,c)
else:
goto .mylabel
您可以将上面的代码定义到一个函数中,并像这样使用一些基本的递归
def action():
while (cond1):
print("inside cond1")
Function1(x,y,z)
else:
if (object.exists("obj1")):
Screen1 = waitForObject("obj1")
print ("Inside Screen1")
while (Screen1.visible):
Function1(a,b,c)
else:
action()
一般使用递归是比较常见的地方。希望这有帮助
在这种特殊情况下,将整个事物包装在 while True
中将实现相同的行为:
while True:
while (cond1):
print("inside cond1")
Function1(x,y,z)
else:
if (object.exists("obj1")):
Screen1 = waitForObject("obj1")
print ("Inside Screen1")
while (Screen1.visible):
Function1(a,b,c)
else:
break
逐个检查此分支:
如果cond1满足,我们继续执行Function1(x, y, z)
一旦cond1不满足,就陷入else
如果 obj1 存在,我们等待 obj1,否则,我们跳出 while True 循环。
等到obj1后,我们继续运行Function1(a,b,c) while Screen1可见,然后回到while True循环的开头(和原来的goto一致) .