[CentralOH] Syntactic Sugar(, or sacharine(, or Lead acetate))?
jep200404 at columbus.rr.com
jep200404 at columbus.rr.com
Fri Aug 12 22:49:18 CEST 2011
On Fri, 12 Aug 2011 12:39:11 -0400, Mark Erbaugh <mark at microenh.com> wrote:
> I'm using a dict to store some parameters. I accidentally
> initialized the dict with {min:0} rather than {'min':0},
> but the former worked as the built-in function min is hashable
> and thus suitable as a key.
> This saves me from having to type quotes in when I retrieve the
> value (i.e. info[min] rather than info['min']). I'm thinking
> it's marginally faster as there's no string processing involved.
> The only downside I can come up with is that the min function
> is not being used as intended and it could be confusing.
" ... premature optimization is the root of all evil"[0]
Speed is important, but meaning is more important,
so the question I would focus on is:
Does {min: 0} express what you _mean_ more clearly than {'min': 0}?
Is using a function as a key, the distilled essence of what you
mean? If[1] so, then it's likely a good thing. If you actually
want to call the key, then {min: 0} is likely a good thing.
If without using the function as the key, you have to use an
eval(key) somewhere else, I would say that having the
function as the key is likely a good thing.
(There may be multiple good ways.)
> One thing I didn't mention is that the dict I am using is for
> the info parameter to SQLAlchemy's Column constructor.
> The info parameter is designed to store application specific
> information. In my case, I'm intending to use info to store
> information needed to validate user input strings (from a web
> page) destined for the database column.
If you want the key to be a validator function,
then by all means use the function as the key,
as it is callable. _If_ I was doing something like that with
the _keys_, I would expect all the keys to be functions.
> The SQLAlchemy docs state that the info paramter must be a dict.
I would consider something like:
{validator_function: min, validator_args: [0]}
That sounds more like the simple direct essence of meaning,
but I am ignorant of the larger context to make a choice.
By the way, does your validator function need to return True
or False?
Regardless of the appropriateness of having a key be a
function, it is fun to explore the speed of using such.
Not all that is sweet[2] is good.
[0] https://secure.wikimedia.org/wikipedia/en/wiki/Optimization_(computer_science)#When_to_optimize
[1] I am not affirming antecendents.
[2] https://secure.wikimedia.org/wikipedia/en/wiki/Lead(II)_acetate
More information about the CentralOH
mailing list