【导读】
python中tuple对象可以包含多个不同类型的数据,在有多个返回值的场景下,能很好地支持。但是需要返回的数据不是一,两个,而是多个。这种返回接口易用吗?
【正文】
1. 用tuple直接返回多个数据
def func():
# do something
return (val1, val2, val3, val4, val5)
接口使用方
ret = func()
print ret[0], ret[1], ret[2], ret[3], ret[4]
分析:对于接口使用方来说,只知道返回的tuple对象包含的元素个数(len(ret)), 并能访问每个元素,但是要知道每个元素的含义,必须看接口实现的源代码。
对于使用者来说,不能见文知意。如果改用类似c++或java对象呢?
2. 用自定义对象返回多个值
先定义返回结果的对象类
class ResultObj(object):
val1 = None
val2 = None
val3 = None
val4 = None
val5 = None
def __init__(self, val1, val2, val3, val4, val5):
self.val1 = val1
self.val2 = val2
self.val3 = val3
self.val4 = val4
self.val5 = val5
定义接口
def func():
# do something
return ResultObj(val1, val2, val3, val4, val5)
接口使用方
ret = func()
print ret.val1, ret.val2, ret.val3, ret.val4, ret.val5
分析:接口使用方知道当前返回的对象哪些成员可以访问,甚至哪些行为可以访问。尤其在可视化IDE开发环境中。
总结:
(1)要返回不多于3个的多个数据,可以用tuple,简单易用
(2)要返回大于3个,建议用类对象。因为这样接口使用方能见文知意,提高了接口的易用性。
(3)经验之谈,具体看使用场景