返回值(Python最佳实践)

时间:2018-11-08 18:36:36

标签: python-3.x

我有一个函数(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最佳实践是什么? 谢谢

1 个答案:

答案 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