首页 > 解决方案 > 在Python中出现异常后将项目返回到for循环中

问题描述

que = []
def worker(x):
    for idx, Item in enumerate(range(1, 3)):
        try:
            #Do Stuff
            print("Fin", Item, "For Worker", x)
        except Item > 2:
            que.append(Item)
            pass


worker(1)
worker(2)

我的问题是我不知道如何告诉 for 函数在有一些项目que时也为项目做 try 部分。所以它会看到Item 3在 open in que 中,切换到worker 2并从那里再次尝试。

当前输出如下所示:

Fin 1 For Worker 1
Fin 2 For Worker 1
Fin 1 For Worker 2
Fin 2 For Worker 2

预期输出应如下所示:

Fin 1 For Worker 1
Fin 2 For Worker 1
Fin 3 For Worker 2

标签: pythonpython-3.xfunctionloopsfor-loop

解决方案


你告诉你的第二个工人做和第一个工人完全相同的事情。相反,您需要第二个函数来迭代que.

def worker_repeat(x):
    for Item in que:
        try:
            #Do Stuff
            print("Fin", Item, "For Worker", x)
        except:
            print("Failed again", Item, "For Worker", x)
            pass

请注意,您在que这里依赖于成为全局变量,这通常是不好的做法。


推荐阅读