Ответ 1
>>> argList = ["egg1", "egg2"]
>>> egg2(*argList)
egg1
egg2
При вызове функции вы можете использовать * args (arguments) и ** kwargs (для аргументов ключевого слова). Посмотрите этот блог о том, как правильно его использовать.
Моя проблема в том, что у меня есть значения в списке. И я хочу отделить эти значения и отправить их как отдельный параметр.
Мой код:
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])
, но нужно делать динамически, так что мне не нужно вводить явно аргументы в список.
>>> argList = ["egg1", "egg2"]
>>> egg2(*argList)
egg1
egg2
При вызове функции вы можете использовать * args (arguments) и ** kwargs (для аргументов ключевого слова). Посмотрите этот блог о том, как правильно его использовать.
Существует специальный синтаксис для распаковка аргументов:
egg2(*argList)
Есть, может быть, лучшие способы, но вы можете сделать:
argList = ["egg1", "egg2"]
(a, b) = tuple(argList)
egg2(a, b)
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, если строка имеет ведущие или конечные пробелы.