Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 返回不同数量和类型的值?_Python_Design Patterns_Return - Fatal编程技术网

Python 返回不同数量和类型的值?

Python 返回不同数量和类型的值?,python,design-patterns,return,Python,Design Patterns,Return,通常我需要让函数或方法返回不同数量或类型的值。 例如: 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 有时我还希望在注入调试代码时具有方面类型行为,这也可能会更改VAL的返回类型/num 有一个标准的编程模式来处理这个问题吗?装饰师 这个例子很有用,但有点笨重

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

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
有时我还希望在注入调试代码时具有方面类型行为,这也可能会更改VAL的返回类型/num

有一个标准的编程模式来处理这个问题吗?装饰师

这个例子很有用,但有点笨重



这只是一个例子。。。举个例子,不要把它当作规范的方法

据我所知,任何原子行为都由不同的函数执行是很方便的。 无论如何,如果您仍然希望在同一个函数中执行多个计算,并且不关心性能,那么您可以始终返回sum和mult(以及任何其他变量),并将选择所需内容的任务留给调用方。就我个人而言,我觉得措辞是一种很好的方法:

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

据我所知,任何原子行为都由不同的函数执行是很方便的。 无论如何,如果您仍然希望在同一个函数中执行多个计算,并且不关心性能,那么您可以始终返回sum和mult(以及任何其他变量),并将选择所需内容的任务留给调用方。就我个人而言,我觉得措辞是一种很好的方法:

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

staticmethod
可能是实现这一点的最佳方法,因此,Python函数只能返回一个值。在您的情况下,该值可能是类似于
元组的容器。但这只是一个单一的值。一般来说,我会说一个具有多个不同返回类型的函数是一种反模式,并且没有标准的方法来处理它。@FishingCode这有什么关系?这是一个函数,不是一个方法。如果OP要注入代码,
tuple
为什么会有用
tuple
是不可变的…@sten您找到其他方法了吗?
staticmethod
可能是实现这一点的最佳方法,因此,Python函数只能返回一个值。在您的情况下,该值可能是类似于
元组的容器。但这只是一个单一的值。一般来说,我会说一个具有多个不同返回类型的函数是一种反模式,并且没有标准的方法来处理它。@FishingCode这有什么关系?这是一个函数,不是一个方法。如果OP要注入代码,
tuple
为什么会有用<代码>元组
是不可变的…@sten您找到了其他方法吗?关于“两者”的条件,即返回总和和倍数,它们已经在dict中了。您可以从调用方sideah访问值['sum']和值['mult'],从这个意义上说,这是因为它将是{'sum':…,'mult':…}。那么'both'的条件呢,即返回sum和mult他们已经在dict中了。您可以从调用方sideah访问值['sum']和值['mult'],从这个意义上说,这是因为它将是{'sum':…,'mult':…}。