Как разбить список и передать их как отдельный параметр?

Моя проблема в том, что у меня есть значения в списке. И я хочу отделить эти значения и отправить их как отдельный параметр.

Мой код:

def egg():
    return "egg"

def egg2(arg1, arg2):
    print arg1
    print arg2

argList = ["egg1", "egg2"]
arg = ', '.join(argList)

egg2(arg.split())

Эта строка кода (egg2(arg.split())) не работает, но я хотел знать, можно ли вызвать некоторую встроенную функцию, которая будет разделять значения из списка и, следовательно, позже мы можем отправить их как два разных параметра. Подобно egg2(argList[0], argList[1]), но нужно делать динамически, так что мне не нужно вводить явно аргументы в список.

Ответы

Ответ 1

>>> argList = ["egg1", "egg2"]
>>> egg2(*argList)
egg1
egg2

При вызове функции вы можете использовать * args (arguments) и ** kwargs (для аргументов ключевого слова). Посмотрите этот блог о том, как правильно его использовать.

Ответ 3

Есть, может быть, лучшие способы, но вы можете сделать:

argList = ["egg1", "egg2"]
(a, b) = tuple(argList)
egg2(a, b)

Ответ 4

arg.split() не разбивает список так, как вы хотите, потому что разделитель по умолчанию не соответствует вашим:

In [3]: arg
Out[3]: 'egg1, egg2'

In [4]: arg.split()
Out[4]: ['egg1,', 'egg2']

In [5]: arg.split(', ')
Out[5]: ['egg1', 'egg2']

Из документы (выделено мной):

Если sep не указан или None, применяется другой алгоритм разделения: пробеги последовательного пробела рассматриваются как один разделитель, и результат не будет содержать пустых строк в начале или end, если строка имеет ведущие или конечные пробелы.