Hello all,
I really like the lambda function for a particular task i have: I am
writing some simulation software, working with many different
materials. Each material with many different properties, some are
temperature dependent, others aren't, some are defined by a function,
some are a lookup table, some are constant. Here is a simplified
version:
class material(object):
def __init__(self,density):
self.density=density
airdensity=lambda T:100000/(287*T)
air=material(airdensity)
steeldensity=lambda T:interp(T,[0,1000],[7856,7813])
steel=material(steeldensity)
rockdensity=lambda T:5000
rock=material(rockdensity)
I really like doing things this way, because i can then define other
properties within the class and i can always use the syntax:
specificgravity_at_273K=stone.specificgravity(273), whether
specificgravity is a function or a parameter. (not sure thats the
right nomenclature, but i think you'll know what i mean.)
But, lambda functions can't be pickled. I would like to pickle my
objects, and i would really like to use parallel python (which
requires pickling).
The best way i can see to do that is to make a new class which
inheirits the 'material' class for each physical material i want to
model, but surely i should be creating instances rather than classes.
Is this going to present some new problems that anyone can forsee? Can
anyone think of a better way to do this? I keep reading that lambda
functions aren't particularly pythonic and that there are always
alternatives, but they seem very elegant to me.
Thanks for your time,
Warren
--
http://mail.python.org/mailman/listinfo/python-list