如何从* 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