2016-10-18 2 views
0

все.Как установить несколько ключевых слов функции сразу, в Python 2?

Мне было интересно, можно ли сразу установить несколько ключевых слов (через список?) В вызове функции.

Например, если вы:

foo, bar = 1, 2 
print(foo, bar) 

Выход (1,2).

Для функции

def printer(foo, bar) 
    print(foo,bar) 

Можно ли сделать что-то вроде:

printer([foo, bar] = [1,2]) 

где оба ключевых слова Создаются со списком?

В частности, причина, почему я спрашиваю, потому что у меня есть функция, которая возвращает две переменные, scale и offset:

def scaleOffset(...): 
    'stuff happens here 

    return [scale, offset] 

Я хотел бы передать оба этих переменных на другую функцию, которая принимает их как ключевые слова, возможно, как вложенный вызов.

def secondFunction(scale=None, offset=None): 
    'more stuff 

До сих пор я не нашел способ сделать вызов, как это:

secondFunction([scale,offset] = scaleOffset()) 
+0

См. Этот ответ: http://stackoverflow.com/a/36908/239078 – bjudson

+0

Возможно, стоит отметить, что в Python 2 'print' является выражением, а не функцией. 'print (foo, bar)' может вводить в заблуждение, поскольку круглые скобки создают кортеж, а не передают аргументы функции. В Python 3 функция 'print' является функцией, и вы можете использовать такие вещи, как синтаксис' * args'. Вы можете получить семантику Python 3, поставив 'из __future__ import print_function' в верхней части вашего файла (перед любой другой строкой, которая также не является оператором' from __future__ import ...'). – Blckknght

ответ

3

Чтобы передать арг как список

arg_list = ["foo", "bar"] 
my_func(*arg_list) 

Чтобы передать kwargs, использовать словарь

kwarg_dict = {"keyword": "value"}  
my_func(**kwarg_dict) 
+0

Отлично! Оказывается, мне нужен был дикт. Благодаря! – dgikmo

Смежные вопросы