Python 如何使用语法:从函数返回break和continue语句?
有了这个问题,我对整个语法提出了质疑,也许这是不可能的,但我们来看看: 我正在运行一个pygame窗口。现在我在这个pygame while循环中有很多代码。因此,我想创建一些函数 但是,我想要创建为函数的代码包含continue和break语句。如果我想从静态函数返回break或continue,很明显它会说U愚蠢?继续/中断在循环之外 我这里的主要问题是:您将如何以更好的方式设计/解决此问题 这就是我的代码大致的样子:Python 如何使用语法:从函数返回break和continue语句?,python,pygame,Python,Pygame,有了这个问题,我对整个语法提出了质疑,也许这是不可能的,但我们来看看: 我正在运行一个pygame窗口。现在我在这个pygame while循环中有很多代码。因此,我想创建一些函数 但是,我想要创建为函数的代码包含continue和break语句。如果我想从静态函数返回break或continue,很明显它会说U愚蠢?继续/中断在循环之外 我这里的主要问题是:您将如何以更好的方式设计/解决此问题 这就是我的代码大致的样子: pygame.init() while
pygame.init()
while True:
for event in pygame.event.get():
if event.type == KEYDOWN:
pyEvents(event)
... # ridiculously long code
# A small example code snippet that I need as a function
(grabbed, frame0) = camera.read()
if not grabbed: # End of feed
break
frame1 = cv2.cvtColor(frame0, cv2.COLOR_BGR2GRAY)
frame2 = cv2.GaussianBlur(frame1, gaussianBlurKSize, 0)
if master is None:
master = frame2
continue
这就是我想要实现的目标:
pygame.init()
while True:
for event in pygame.event.get():
if event.type == KEYDOWN:
pyEvents(event)
... # ridiculously long code
# My dream function
result = myFunction(camera, master)
if result == break:
break
elif result == continue:
continue
def myFunction(camera, master):
(grabbed, frame0) = camera.read()
if not grabbed:
return break # Error: outside a loop
frame1 = cv2.cvtColor(frame0, cv2.COLOR_BGR2GRAY)
frame2 = cv2.GaussianBlur(frame1, gaussianBlurKSize, 0)
if master is None:
master = frame2
return continue, master # Error: outside a loop
return frame2
您可以在函数中引发异常。在循环中,可以使用try-except构造。也许这个链接有帮助:
您可以在函数中引发异常。在循环中,可以使用try-except构造。也许这个链接有帮助: 只需创建一个全局布尔变量:
running = True
while running:
# your code goes here
如果要中断循环,请将running设置为False:
只需创建一个全局布尔变量:
running = True
while running:
# your code goes here
如果要中断循环,请将running设置为False:
像这样的怎么样
pygame.init()
while True:
for event in pygame.event.get():
if event.type == KEYDOWN:
pyEvents(event)
... # ridiculously long code
# My dream function
frame2, master, result = myFunction(camera, master)
if result == 'break':
break
elif result == 'continue':
continue
def myFunction(camera, master):
(grabbed, frame0) = camera.read()
result = None
if not grabbed:
return None, None, 'break'
frame1 = cv2.cvtColor(frame0, cv2.COLOR_BGR2GRAY)
frame2 = cv2.GaussianBlur(frame1, gaussianBlurKSize, 0)
if master is None:
master = frame2
return frame2, master, 'continue'
return frame2, master, result
像这样的怎么样
pygame.init()
while True:
for event in pygame.event.get():
if event.type == KEYDOWN:
pyEvents(event)
... # ridiculously long code
# My dream function
frame2, master, result = myFunction(camera, master)
if result == 'break':
break
elif result == 'continue':
continue
def myFunction(camera, master):
(grabbed, frame0) = camera.read()
result = None
if not grabbed:
return None, None, 'break'
frame1 = cv2.cvtColor(frame0, cv2.COLOR_BGR2GRAY)
frame2 = cv2.GaussianBlur(frame1, gaussianBlurKSize, 0)
if master is None:
master = frame2
return frame2, master, 'continue'
return frame2, master, result
您可以返回整数,如1-break、2-continue等。您可以返回字符串,如break,然后检查响应。您是对的。看起来很简单。你可以返回整数,比如1-break,2-continue等。你可以返回字符串,比如break,然后检查响应。你是对的。看起来很容易