passing no arguments to a callback function question

Duncan Booth duncan at NOSPAMrcp.co.uk
Tue Apr 8 06:31:37 EDT 2003


matthew <matthew at newsgroups.com> wrote in 
news:b6u60i$i6p$1 at lust.ihug.co.nz:


> Thanks for the hint. However, functions like print_params are outside of 
> the class scope sitting in another module. The idea is that users can 
> write their own functions which they can add as listeners for certain 
> event types being scanned from a file. I 'pinched' the curry class from 
> the py.cookbook and I think I'm probably being tripped up by my only 
> vague understanding of argument passing. Here is the listener code 
> (which I'm sure must look pretty ugly to you guys):-. Thanks for further 
> assistance. matthew.


>              entry = (function, self.curry(function,args))

This passes an argument of None which will then be passed on to your 
function when it is called. You need to pass an empty sequence if you want 
your function to take no arguments. Also it looks as though you want to 
unpack a tuple 'args' into the *args argument to curry, which means you 
need to use the star on the call as well.

Try:

     if args is None: args = ()
     entry = (function, self.curry(function, *args))

or you could set the default argument to () instead of None for a similar 
effect.





-- 
Duncan Booth                                             duncan at rcp.co.uk
int month(char *p){return(124864/((p[0]+p[1]-p[2]&0x1f)+1)%12)["\5\x8\3"
"\6\7\xb\1\x9\xa\2\0\4"];} // Who said my code was obscure?




More information about the Python-list mailing list