如何使用语法:从函数返回break和continue语句?

问题描述 投票:0回答:2

关于这个问题,我正在质疑整个语法,也许这不可能,但是我们开始吧:)

我正在运行pygame窗口。现在我在pygame while循环中有很多代码。因此,我想创建一些功能。

但是,我要创建为函数的代码包含continuebreak语句。如果我想返回break或从静态函数继续,显然它会显示“ U愚蠢?Continue / Break在循环之外”

我的主要问题在这里:您将如何以更好的方式设计/解决这个问题?

这是我的代码的样子(或多或少):

        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
python pygame
2个回答
0
投票

您可以在函数中引发异常。在循环中,您可以使用try-except构造。也许此链接很有帮助:https://realpython.com/python-exceptions/


0
投票

只需创建一个global布尔变量:

running = True
while running:
    # your code goes here

如果要中断循环,请将running设置为False

def myFunction():
    global running
    if you want to break the loop:
        running = False
© www.soinside.com 2019 - 2024. All rights reserved.