我在python中有一个函数,它对字符串进行错误检查。如果函数发现错误,它将返回一个带有错误代码和该错误标识符的元组。稍后在程序中我有处理错误的函数。它将元组接受为两个变量。
errCode, i = check_string(s,pathType)
check_string是生成元组的函数。我想要它做的是如果没有错误则返回零。当返回零时,上面的代码似乎失败了,因为变量i没有任何内容。
有没有一种简单的方法可以让它工作或者我只需要让程序在没有找到错误的情况下返回0和0的元组?
答案 0 :(得分:3)
我会使用异常系统。
class StringError(Exception):
NO_E = 0
HAS_Z = 1
def string_checker(string):
if 'e' not in string:
raise StringError('e not found in string', StringError.NO_E)
if 'z' in string:
raise StringError('z not allowed in string', StringError.HAS_Z)
return string.upper()
s = 'testing'
try:
ret = string_checker(s)
print 'String was okay:', ret
except StringError as e:
print 'String not okay with an error code of', e.args[1]
答案 1 :(得分:1)
为什么不在尝试检索值之前简单地检查元组的长度?
err_tup = check_String(s, pathType)
if len(err_tup) == 2:
errCode, i = err_tup
else: # assuming it can only be 1 otherwise
errCode = err_tup
这可以在不对生成元组的其余代码进行任何更改的情况下工作,并且在语义上是清晰的。
基于“简单比复杂更好。”
答案 2 :(得分:1)
您可以使用None作为错误值
def check_string(s,pathType):
# No error
return (None, i)
答案 3 :(得分:0)
如果你要返回零:
foo = func()
if not foo:
print 'No errors'
else:
# foo is tuple