functon invoke or not

Peter Otten __peter__ at web.de
Wed Jan 9 03:43:15 EST 2013


skyworld wrote:

> Hi,
> 
> I see someone's code as this:
> 
> class ABC: ....
>     def __init__(self, env):
>          .......
>          self.jmpTable['batchQ']['submit_job']  = self.lsf_submit

The bound method self.lsf_submit is not invoked in this line, it is stored 
for later use.

>          .......
>     def lsf_submit(self, cmd,env):
>          .....
> 
> what confused me is why there is no parentheses for self.lsf_submit in
> "self.jmpTable['batchQ']['submit_job']  = self.lsf_submit"? what does
> this piece of code mean? thanks.

Somewhere else in the code the is probably code similar to

var1 = ...
var2 = ...
self.jmpTable[var1][var2](some_command, some_env)

When var1 is "batchQ" and var2 is "submit_job" this will in effect call

self.lsf_submit(some_command, some_env)

A slightly simplified example with just a dict and two functions:

>>> def german(name):
...     print "Guten Tag, Herr", name
... 
>>> def french(name):
...     print "Bonjour, M.", name
... 
>>> lookup = {"fr": french, "de": german}
>>> lookup["fr"]("Hulot")
Bonjour, M. Hulot





More information about the Python-list mailing list