views:

49

answers:

2

I'm not quite sure of the terminology here so please bear with me....

Let's say I have a constructor call like this:

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',
)

except I would like to replace that by an operation on a dictionary provided to me:

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" ...
)

How can I do this?

+4  A: 
machineSpecificEnvironment = Environment(**keys)
Duncan
where's this documented?
Jason S
In the documentation *duck*http://docs.python.org/tutorial/controlflow.html#keyword-argumentshttp://docs.python.org/tutorial/controlflow.html#unpacking-argument-lists
Rudi
various places, but the problem is knowing what to look for (and even then since there's no keyword it's tricky to search).Try http://docs.python.org/reference/expressions.html#calls for the formal function call syntax.
Duncan
+3  A: 

You can apply a dict as an argument list by the ** notation

machineSpecificEnvironment = Environment(**keys)
Rudi