[SciPy-user] General Python Question: nested function calls
Ryan Krauss
ryanlists at gmail.com
Wed Aug 1 15:37:12 EDT 2007
I often write code something like this:
def TruncatePickleFile(pathin, trigname='a', trigtype='sw',
savepath=None, threshlevel=None, duration=0.05, backup=0.01):
"""Trunate the pickleddatafile whose path is pathin. If
trigtype=='lg', use a DropDownLightGateTrigger, else use a
standard Trigger."""
untrunc = pickleddatafiles.PickledDataFile(pathin)
mytrunc = pickleddatafiles.TruncateDataObj(untrunc,
threshlevel=threshlevel, backup=backup, duration=duration)
mytrunc.chname = trigname
if trigtype == 'lg':
mytrunc.SetupTrigger(DataProcMixins.DropDownLightGateTrigger)
else:
mytrunc.SetupTrigger()
mytrunc.SetupTruncChannel()
mytrunc.Truncate()
pathout = mytrunc.Pickle(savepath)
return pathout
def TruncatePickleFiles(listin, trigname='a', trigtype='sw',
threshlevel=None, duration=0.05, backup=0.01):
listout = []
for item in listin:
print item
curpath = TruncatePickleFile(item, trigname=trigname,
trigtype=trigtype, threshlevel=threshlevel, duration=duration,
backup=backup)
listout.append(curpath)
return listout
where TruncatePickleFiles is sort of just a vectorization of
TruncatePickleFile, but with some of the keyword args set. My problem
is not that this might not be the fastest way to execute the code, but
that I get tired of doing this kind of stuff:
curpath = TruncatePickleFile(item, trigname=trigname,
trigtype=trigtype, threshlevel=threshlevel, duration=duration,
backup=backup)
but I also don't want to just do
def TruncatePickleFiles(listin, **kwargs):
because I like to see the defaults and know what keyword arguments are legal.
Does anyone else have this problem or have an elegant solution to it?
The problem comes up for me also when I want a derived class to call a
parent class's method in some partially overwritten method of the
derived class.
Ideally, I think I would like to pass **kwargs to the nested function,
but without using **kwargs in the definition of the top function, if
that makes any sense.
Thanks for any suggestions,
Ryan
More information about the SciPy-User
mailing list