Python:循环函数列表和资产结果

时间:2014-09-03 15:10:27

标签: python list function loops

我需要循环一个返回" Success / 0"或"失败/ 1"。

我有功能列表

cmd_list = [a(x, y , z), b(e, f, g)] 

我迭代思考

for cmd in cmd_list:
    if cmd:
        break

函数在序列中按预期运行,但是,任何返回False / 1的函数似乎都没有打破循环。

4 个答案:

答案 0 :(得分:2)

如果出现问题而停止,而不必在每个步骤后检查错误,通常的技术是使用异常。如果失败,请使所有函数出现错误,例如

class CommandError(Exception): pass

然后简单地逐个调用它们,在块之后捕获异常:

try:
    a(x, y , z)
    b(e, f, g)
except CommandError as e:
    # error handling
else:
    # successfully finished

答案 1 :(得分:1)

你想要这个吗?:

cmd_list = [lambda: a(x,y), lambda: b(),...]  
for cmd in cmd_list:  
    if cmd():  
        break  

答案 2 :(得分:1)

如果您希望在迭代之前延迟执行这些功能,可以使用functools.partial

from functools import partial

cmd_list = [partial(a, x, y, z), partial(b, e, f, g)]

for func in cmd_list:
    if func():
        break

partial(f, a, b, c)将创建一个类似于函数的新对象,在调用时,将返回使用参数f调用的函数a, b, c的结果。

这与你打破循环的问题无关:我很确定你的一个函数根本不会返回你的想法。

答案 3 :(得分:0)

在Python中,测试1为真,0为假。您应该更改函数以返回1表示成功,0表示失败。