0

据我所知,“继续”将跳回循环的顶部。但就我而言,它并没有跳回来,继续不喜欢我:(

for cases in files:
  if ('python' in cases.split()):
    execute_python_scripts(cases.split())
    elif run_test_case(cases.split()):
      continue
    else:
      logger("I am here")
      break 

在我的情况下run_test_case()给出 1、2、3、4 等......但它总是先执行(1)并跳转到 else 部分。所以我收到了“我在这里”的信息。它不应该像这样工作。当我使用“继续”时,它应该跳转到 for 循环。

以下是run_test_case()

def run_test_case(job):
  for x in job:
    num_of_cases = num_of_cases - 1
    test_type = x.split('/')
    logger(log_file,"Currently "+ x +"hai!!")
    if test_type[0] == 'volume':
      backdoor = test_type[1].split("_")
      if backdoor[0] == 'backdoor':
        return get_all_nas_logs()
      else:
        if perform_volume_operations(x,num_of_cases) == False:
          return False
        else:
      logger(log_file,"wrong ha!!")

为什么它总是转到 else 部分,而不跳回 for 循环?提前致谢。

4

1 回答 1

1

在这里elif run_test_case(cases.split()):,您正在调用该run_test_case方法,该方法将运行您的代码来评估elif条件的结果。

如果该方法的结果评估为,则它仅进入由elif(在您的情况下为)分隔的块,否则它将跳转到 else 子句。continueTrue

问题可能出在您的run_test_case代码中,它永远不会返回 True,因此您永远不会得到您期望的行为。

如果不确切知道您想要完成什么,很难说,但我会说您return True在该代码的末尾缺少 a,这意味着,如果一切都正确执行到最后,您希望它返回 True.. .但我只是在这里猜测,您需要考虑该方法应该做什么。

在 python 中,iforelif子句不仅针对TrueandFalse常量进行评估,而且更普遍地针对 True-like 和 False-like 值进行评估。None,例如,是一个类似假的值,一个非空字符串是一个类似真的值,等等。

从文档中检查被认为是真或假的值:

http://docs.python.org/library/stdtypes.html

于 2012-10-23T14:29:25.700 回答