all() is slow?

Ethan Furman ethan at stoneleaf.us
Thu Nov 10 13:43:32 EST 2011


Devin Jeanpierre wrote:
> Well. It reads fine in a certain sense, in that I can figure out
> what's going on (although I have some troubles figuring out why the
> heck certain things are in the code). The issue is that what's going
> on is otherworldly: this is not a Python pattern, this is not a normal
> approach. To me, that means it does not read fine.

Certainly it's a Python pattern -- it's what you do to dynamically 
generate code.


> The use of exec also results in (seemingly) arbitrary constraints on
> the input. Like, why can't "--" be a name? Because exec? Is there some
> other reason?

'--' not being allowed for a name has *nothing* to do with exec, and 
everything to do with `--` not being a valid Python identifier.


 > '--' is a valid attribute name on virtually any object that supports
 > attribute setting (e.g. function objects). Of course, you need to use
 > setattr() and getattr(). Is this really the reason, or is it a
 > limitation caused primarily by the usage of exec and the need to
 > prevent code injection? If somebody added this feature later on, would
 > this create a security vulnerability in certain projects that used
 > namedtuple in certain ways?

So you think

     somevar = getattr(my_named_tuple, '--')

is more readable than

     somevar = my_named_tuple.spam

?

~Ethan~



More information about the Python-list mailing list