0

相关代码:

def return_t_done(queryList):
    for item in list:
        if item[0] == "t_done":
            return int(item[1])
    raise Error("Attempted to get t_done's value, yet no t_done exists")

所以基本上这段代码运行在一个嵌套列表中,形式为

[[spam,eggs],[ham,yum]]

并查找 't_done' 的字段 ([[field,value],[field,value]]),并在找到时返回与该字段关联的值。应该总是有一个 t_done 字段,但如果没有(这是使用我没有编写的应用程序解析自动生成的日志文件并且无法访问其源代码,所以谁知道会出现什么问题)我希望以最合适的方式优雅地引发异常。

也就是说,这对我来说似乎是最优雅的方式,但我并不是特别精通 Python,而且我对文档的研究让我有点困惑。那么,我应该将 for 循环包装在 try, except 子句中吗?我应该为这个错误写一个类吗?我应该引发异常而不是错误吗?写的好吗?

谢谢!

4

1 回答 1

4

你拥有它的方式很好。else但另一种可能性是使用for 循环的鲜为人知的原因。当且仅当 for 循环成功完成时,才会评估它。

for item in list:
    if item[0] == "t_done":
        return int(item[1])
else:
    raise Error(...)

注意缩进:else 与 对齐for,而不是if.

于 2013-07-02T14:57:27.233 回答