如何"double pop"?

How to "double pop"?

对不起,如果我的标题有点不清楚,我不确定如何更好地表达我的问题。我将给出一个快速代码片段来说明我正在尝试做什么:

for data_file in data_files:
    analyze(data_file)

def analyze(data_file):
    for _ in np.arange(n_steps):
        foo(data_file)
    do some other things

def foo(data_file):
    do some things
    if (value > 1): 
        do some things
        double_return()
    else:
        continue doing other things

然后我想让函数 double_return() 做的是 return 回到更大的循环:

for data_file in data_files:

(而不是 return,它将继续 for _ in n_steps 中的下一步)。但是,我不确定在这里使用什么命令,也没有找到它。

你可以做的是 return 一个 truthy 值(假设 foo() 之外的所有其他路由都是默认值 return None)并测试它:

def analyze(data_file):
    for _ in np.arange(n_steps):
        if foo(data_file):
            return
    do some other things

def foo(data_file):
    do some things
    if (value > 1): 
        do some things
        return True
    else:
        continue doing other things

for data_file in data_files:
    analyze(data_file)

它相当模糊了意思,但它会以可测试的方式工作。

foo() 可以 return True,如果它完成了,或者 False 如果你想“早点离开”:

for data_file in data_files:
   analyze(data_file)

def analyze(data_file):
   for _ in np.arange(n_steps):
       if not foo(data_file):
          return
   do some other things

def foo(data_file):
   do some things
   if (value > 1):
       do some things
       return False
   else:
       continue doing other things

   return True

编辑:
为了使意思更清楚,您可以定义 foo_completed=Truefoo_not_completed=False,并使用这些常量代替 True/False。