Как вернуть несколько значений из *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
Другие вопросы по тегам