Как вернуть несколько значений из *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
4 ответа
Итак, вы хотите вернуть новый кортеж той же длины, что и аргументы (т. Е. Len(args)), и чьи значения вычисляются из args[0], args[1] и т. Д. Обратите внимание, что вы не можете изменять 'args 'напрямую, например, вы не можете назначить args[0] = xxx, это недопустимо и вызовет объект TypeError: 'tuple'не поддерживает назначение элементов. Затем вам нужно вернуть новый кортеж, длина которого равна 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.
Функция работает с любым количеством аргументов.
args это список. если вы вернете последовательность (list, tuple), 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
Я надеюсь, что это помогает
Просто верните кортеж:
def hello(*args):
return 1, 2, 3
...или же...
return (1, 2, 3)
Просто верните их. Например, если вы хотите вернуть параметры без изменений, сделайте это:
def hello(*args):
return args
Если вы хотите вернуть что-то еще, верните это:
def hello(*args):
# ...
# Compute d, e and f
# ...
return d, e, f