现状:
def isTooLarge(intValue):
if intValue > 100: print "too large"; return True
return False
if isTooLarge(101): break
现在我想更多地使这个功能和图书馆友好"通过返回errormessagetext而不是打印它:
def isTooLarge(intValue):
if intValue > 100: return True, "too large"
return False
bln,str = isTooLarge(101)
if bln: specialprint(str); break
我知道如何再次评估它作为一个单行程? (像" if,str isTooLarge(101):specialprint(str); break"或者Python的方式是什么?
将错误消息放入像" lasterrormessage"等全局变量中没问题。并保持原样。
答案 0 :(得分:2)
通过使用像错误一样的错误,您可以更加“图书馆友好”:
def CheckNotTooLarge(intValue):
if intValue > 100:
raise ValueError("too large") #or AssertionError
return #or maybe do something else?
然后用户可以使用try: except:
try:
CheckNotTooLarge(101)
except ValueError:
traceback.print_exc() #print error message
#handle too large
else:
#handle not too large
如果你只是想在不处理错误的情况下进行检查,我会看到这会很快变得烦人所以我建议有两个函数,一个只返回一个布尔值,没有额外的工作,另一个引发/返回错误文本:
def isTooLarge(intValue):
return intValue<=100 #now this is a one liner!
def checkIsTooLarge(intValue):
"uses isTooLarge to return an error text if the number is too large"
if isTooLarge(intValue):
return "too large" #or raise ...
else:
return False
答案 1 :(得分:0)
def isTooLarge(intValue):
return "too large" if intValue > 100 else False
x = isTooLarge(101); x and print(x)
然而。请不要这样做。出于某种原因存在例外情况。仅仅为了它而把事情放在一行就会使你的代码难以阅读。