我有错误列表及其相关代码和说明:
Exception = namedtuple("Exception", "code name description")
exceptions = [
Exception(1, "ILLEGAL FUNCTION", "Definition 1"),
Exception(2, "ILLEGAL DATA ADDRESS", "Definition 2"),
Exception(3, "ILLEGAL DATA VALUE", "Definition 2")
]
我想要一个使用code == exception_code检索异常的函数。我一直在寻找,我能想出的最接近的是:
# Returns the Exception tuple corresponding to the exception_code
def getException(self):
return [item for item in exceptions if item[0] == self.exception_code]
这可行,但实际上返回列表。我使用Python的经验很差,我无法弄清楚如何简单地返回元组
注意:总会有一个代码为== exception_code
的元组 print x.getException
的示例输出与我当前的getException
:
[Exception(code=2, name='ILLEGAL DATA ADDRESS', description='Definition 2')]
答案 0 :(得分:3)
在这种情况下,你最好将异常作为dict:
exceptions = {
1: Exception(1, "ILLEGAL FUNCTION", "Definition 1"),
2: Exception(2, "ILLEGAL DATA ADDRESS", "Definition 2"),
3: Exception(3, "ILLEGAL DATA VALUE", "Definition 2")
}
从这里开始,您的getException
功能变得微不足道了:
def getException(code):
return exceptions[code]
...你必须想知道函数调用是否看起来比仅仅内联更好: - )