2010-05-18 6 views
4

Я не совсем уверен в терминологии здесь поэтому, пожалуйста, медведь со мной ....python: вызов конструктора из словаря?

Скажем, у меня есть вызов конструктора, как это:

machineSpecificEnvironment = Environment(
    TI_C28_ROOT = 'C:/appl/ti/ccs/4.1.1/ccsv4/tools/compiler/c2000', 
    JSDB = 'c:/bin/jsdb/jsdb.exe', 
    PYTHON_PATH = 'c:/appl/python/2.6.4', 
) 

за исключением Я хотел бы заменить что операция по предоставленному мне словарю:

keys = {'TI_C28_ROOT': 'C:/appl/ti/ccs/4.1.1/ccsv4/tools/compiler/c2000', 
     'JSDB': 'c:/bin/jsdb/jsdb.exe', 
     'PYTHON_PATH': 'c:/appl/python/2.6.4'} 
machineSpecificEnvironment = Environment(
    ... what do I put here? it needs to be a function of "keys" ... 
) 

Как это сделать?

ответ

5
machineSpecificEnvironment = Environment(**keys) 
+0

где же это документально? –

+1

В документации * утка * http://docs.python.org/tutorial/controlflow.html#keyword-arguments http://docs.python.org/tutorial/controlflow.html#unpacking-argument-lists – Rudi

+0

в разных местах, но проблема заключается в том, чтобы знать, что искать (и даже тогда, когда нет ключевого слова, это сложно найти). Попробуйте http://docs.python.org/reference/expressions.html#calls для синтаксиса формальных функций. – Duncan

3

Вы можете применить Dict в качестве списка аргументов по ** обозначения

machineSpecificEnvironment = Environment(**keys) 
Смежные вопросы