据我所知,“继续”将跳回到循环的顶部。但在我的情况下,它不会跳回去,继续不喜欢我:(
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循环?提前谢谢。
答案 0 :(得分:1)
此处elif run_test_case(cases.split()):
您要调用run_test_case
方法,该方法将运行您的代码以评估elif
条件的结果。
如果该方法的结果评估为elif
,它只会进入由continue
(在您的情况下为True
)分隔的块,否则它将跳转到else子句。
问题可能在于您的run_test_case
代码,它永远不会返回True,因此您永远不会得到您期望的行为。
如果不确切地知道你想要完成什么,很难说,但是我会说你在代码的末尾错过了return True
,这意味着,如果一切正常直到最后,你希望它返回True ......但我只是在猜测,你需要考虑该方法应该做什么。
在python中,if
或elif
子句不仅针对True
和False
常量进行评估,而且更常用于类似True和False的值。例如,None
是类似虚假的值,非空字符串是类似于真值的值等。
从文档中查看有关被视为真或假的值: