如何从 *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
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
因此,您想要返回一个与 args 长度相同的新元组(即 len(args)),其值是根据 args[0]、args[1] 等计算得出的。
请注意,您不能直接修改'args',例如您不能分配args[0] = xxx,这是非法的,并且会引发类型错误:'tuple'对象不支持项目分配。
然后您需要做的是返回一个新元组,其长度与 len(args) 相同。
例如,如果您希望函数为每个参数添加 1,您可以这样做:
或者以更详细的方式:
然后,执行 :
将返回一个 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:
Or in a more verbose way:
Then, doing :
will return a 3-element tuple whose values are 2, 3 and 4.
The function works with any number of arguments.
只需返回一个元组:
...或...
Just return a tuple:
...or...
args 是一个列表。如果你返回一个序列(列表、元组),Python 将尝试迭代并分配给你的 d、e、f 变量。所以下面的代码就可以了。
只要 *args 列表中有正确数量的值即可。它将被分配给您的变量。如果不是,il 将引发 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.
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.
I hope ith helps
只需归还它们即可。例如,如果您想返回未修改的参数,请执行以下操作:
如果您想返回其他内容,请返回该内容:
Just return them. For instance, if you want to return the parameters unmodified, do this:
If you want to return something else, return that instead: