如何从 *args 返回多个值?

发布于 2024-12-20 00:50:50 字数 453 浏览 0 评论 0原文

我有一个 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

I have a hello function and it takes n arguments (see below code).

def hello(*args):
  # return values

I want to return multiple values from *args. How to do it? For example:

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

SOLUTION:

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')

Just return list. :) :D

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

丢了幸福的猪 2024-12-27 00:50:50

因此,您想要返回一个与 args 长度相同的新元组(即 len(args)),其值是根据 args[0]、args[1] 等计算得出的。
请注意,您不能直接修改'args',例如您不能分配args[0] = xxx,这是非法的,并且会引发类型错误:'tuple'对象不支持项目分配。
然后您需要做的是返回一个新元组,其长度与 len(args) 相同。
例如,如果您希望函数为每个参数添加 1,您可以这样做:

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)

将返回一个 3 元素元组,其值为 2、3 和 4

。函数适用于任意数量的参数。

So, you want to return a new tuple with the same length as args (i.e. len(args)), and whose values are computed from args[0], args[1], etc.
Note that you can't modify 'args' directly, e.g. you can't assign args[0] = xxx, that's illegal and will raise a TypeError: 'tuple' object does not support item assignment.
What You need to do then is return a new tuple whose length is the same as len(args).
For example, if you want your function to add one to every argument, you can do it like this:

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

Or in a more verbose way:

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

Then, doing :

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

will return a 3-element tuple whose values are 2, 3 and 4.

The function works with any number of arguments.

似最初 2024-12-27 00:50:50

只需返回一个元组:

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

...或...

    return (1, 2, 3)

Just return a tuple:

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

...or...

    return (1, 2, 3)
倒数 2024-12-27 00:50:50

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

def hello(*args):
   return args

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

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

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

我希望有帮助

args is a list. if you return a sequence (list, tuple), Python will try to iterate and assign to your d, e, f variables. so following code is ok.

def hello(*args):
   return args

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

As long as you have, the right number of values in the *args list. It will be assigned to your variables. If not, il will raise a ValueError exception.

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

I hope ith helps

尘曦 2024-12-27 00:50:50

只需归还它们即可。例如,如果您想返回未修改的参数,请执行以下操作:

def hello(*args):
    return args

如果您想返回其他内容,请返回该内容:

def hello(*args):
    # ...
    # Compute d, e and f
    # ...
    return d, e, f

Just return them. For instance, if you want to return the parameters unmodified, do this:

def hello(*args):
    return args

If you want to return something else, return that instead:

def hello(*args):
    # ...
    # Compute d, e and f
    # ...
    return d, e, f
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文