在 Python 中返回函数后枚举停止计数

Enumerate stops counting after returning a function in Python

我的问题是我想在我的 worker 中调用 return logout() 但这确实破坏了枚举并将 idx 计数器设置为 0 所以它不会打印 item . return 怎样退出才能不出现这个问题?

代码:

import time

def logout():
    print("logout")

N = 4
def worker():
    for idx, Item in enumerate(range(1, 12)):
        if idx % N == 0:
            print("Done Session") 
            time.sleep(1)
            return logout()
        print(Item)    

worker()
worker()
worker()

输出:

Done Session
logout
Done Session
logout
Done Session
logout

预期输出:

Done Session
logout
1
2
3
4
Done Session
logout
5
6
7
8
Done Session
logout
...

您可以将必要的东西存储在一个列表中,然后 return 一次全部 (注意:我注释了一些输出不需要的代码行):

N = 4
def worker():
    log = [] # Not needed
    for idx, Item in enumerate(range(1, 12)):
        if idx % N == 0:
            print("Done Session") 
            time.sleep(1)
            log.append(logout()) # logout()
        print(Item)
    return log # Not needed

结果:

Done Session
logout
1
2
3
4
Done Session
logout
5
6
7
8
Done Session
logout
9
10
11
Done Session
logout
1
2
3
4
Done Session
logout
5
6
7
8
Done Session
logout
9
10
11
Done Session
logout
1
2
3
4
Done Session
logout
5
6
7
8
Done Session
logout
9
10
11

这会起作用:

N = 4
def worker():
    for idx, Item in enumerate(range(1, 12)):
        if idx % N == 0:
            print("Done Session") 
            time.sleep(1)
            logout()
        print(Item)