如何从* args返回多个值?

我有一个hello函数,它需要n个参数(见下面的代码)。

def hello(*args):
  # return values

我想从*args返回多个值。 怎么做? 例如:

d, e, f = hello(a, b, c)

解:

def hello(*args):
  values = {} # values
  rst = [] # result
  for arg in args:
    rst.append(values[arg])
  return rst

a, b, c = hello('d', 'e', f)
a, b = hello('d', 'f')

只是返回列表。 :):D


所以,你想要返回一个长度与args相同的新元组(即len(args)),并且它的值是从args [0],args [1]等计算出来的。注意,你不能修改'args '直接,例如你不能分配args [0] = xxx,这是非法的,会引发TypeError:'元组'对象不支持项目分配。 你需要做的是返回一个长度与len(args)相同的新元组。 例如,如果你想让你的函数为每个参数添加一个,你可以这样做:

def plus_one(*args):
    return tuple(arg + 1 for arg in args)

或者以更详细的方式:

def plus_one(*args):
    result = []
    for arg in args: result.append(arg + 1)
    return tuple(result)

然后,做:

d, e, f = plus_one(1, 2, 3)

将返回值为2,3和4的3元素元组。

该函数可以处理任意数量的参数。


只需返回一个元组:

def hello(*args):
    return 1, 2, 3

...要么...

    return (1, 2, 3)

参数是一个列表。 如果你返回一个序列(列表,元组),Python将尝试迭代并分配给你的d,e,f变量。 所以下面的代码是可以的。

def hello(*args):
   return args

d, e,  f = hello(1,2,3)

只要你有,在* args列表中的正确数量的值。 它将被分配给你的变量。 如果不是,则会引发ValueError异常。

d, e, f = hello(1, 2) #raise ValueError

我希望ith帮助

链接地址: http://www.djcxy.com/p/53133.html

上一篇: How to return multiple values from *args?

下一篇: Loop calculations in Python