我有一个函数(F1)返回(a,b,c)的值 以及使用这些值的其他功能(F2)。我需要检查F2是否“ a为None”。
这是第一个功能(F1)
def get_info():
msg = get_msg()
number = get_number()
if msg is not None:
return msg, number
return False, False
第二功能(F2)
def save_log():
msg, number = get_info()
if msg:
do_more_stuff
如果我在第一个函数中没有做return False, False
,那么在第二个函数中我得到了TypeError: 'bool' object is not iterable
。
除了return False, False
以外,我还有其他更好的方法来返回这些值。
在这种情况下,pythonic最佳实践是什么? 谢谢
答案 0 :(得分:0)
这就是使用错误/异常的解决方案的样子。 get_msg
(如果适用,也许还有get_number
)在无法返回值而不是返回表示失败的值时会引发异常。
class MessageRetrievalError(Exception):
pass
def get_msg():
message = message_code()
if message is None:
raise MessageRetrievalError
return message
def get_info():
return get_msg(), get_number()
def save_log():
try:
msg, number = get_info()
do_more_stuff
except MessageRetrievalError:
do_other_stuff