首页 > 解决方案 > 返回不同数量和类型的值?

问题描述

通常我需要让函数或方法返回不同数量或类型的值。例如 :

def test(x,y,ret='both') :
  s = x + y
  m = x * y
  if ret = 'both' : return s, m
  if ret = 'sum' : return s
  if ret = 'mult' : return m

此外,有时我希望在注入调试代码时具有 Aspect 类型行为,这也可能会更改返回类型/num-of-vals

是否有处理此问题的标准编程模式?装饰师?

该示例有效,但有点笨拙..


这只是一个例子......为了说明,不要把它当作规范的方法

标签: pythondesign-patternsreturn

解决方案


据我所知,任何原子动作都由不同的函数执行是很方便的。无论如何,如果您仍然想在同一个函数中执行多个计算并且您不介意性能,您总是可以返回 sum 和 mult(以及任何其他变量),并将选择所需内容的任务留给调用者. 就个人而言,我发现字典是一个不错的方法:

def test(x, y) :
    values = {}
    values['sum'] = x + y
    values['mult'] = x * y
    return values

推荐阅读