Python函数返回值设计

Python函数同时返回错误值和数据怎么设计?

返回元组

def func():
    error = None
    value = 123
    return error, value

def func2():
    error, value1 = func()
     # balabala
     
    value2 = value1 + 123
    return error, value2

返回字典

import json


def func1():
    error1 = 'Test Error'
    value1 = 456
    if error1:
        return {'error': error1}
        
    return {'value': value1}

def func2():
    result = func1()
    if 'error' in result:
        return result

    error2 = None
    value2 = 789 + result['value']
    if error2:
        return {'error': error2}
        
    return {'value': value2}
    
def func3():
    result = func2()
    return json.dumps(result)

返回字典的好处:

  1. 字典容纳的数据类型更加丰富,方便保持前向兼容
  2. 返回的数据方便序列化成Json格式
  3. 在函数调用链中,对于错误的判断保持统一的风格

定义自己的Result类

class Error(object):
    SUCCESS = 0
    FAIL = 1


class Result(object):
    def __init__(self, error=0, value=None, msg=None):
        self.error = error
        self.error_msg = msg
        self.value = value


def func1():
    return Result(error=Error.FAIL, value='Failed Value')


def func2():
    result = func1()
    if result.error != Error.SUCCESS:
        return result
    
    return Result(error=Error.SUCCESS, value='Success Value')

返回Result对象的好处:

  1. 可以根据需要自定义数据结构,所有函数返回固定的数据结构
  2. 返回信息里面可以包含错误码,错误信息,Value等多个内容
本文由 络壳 原创或整理,转载请注明出处