In <[EMAIL PROTECTED]>, Warren Stringer
wrote:

> Oops! guess I should have tested my rather hasty complaint about executable
> containers. This is nice:
> 
> def a(): return 'b'
> def b(): print 'polly! wakey wakey'
> c = {}
> c['a'] = b
> c[a()]()  #works!
> 
> 
> c[a()]() is a switch statement with an amorphous selector- very handy in its
> own right. But, using a() as a generator would be more expressive. This
> seems to work:
> 
> c = [a,a]
> [d() for d in c]

If you are using the list comprehension just for the side effect of
calling `d` then consider this bad style.  You are building a list of
`None` objects just to have a "cool" one liner then.

> But that still isn't as simple or as direct as:
> 
> c[:]()
> 
> Which would you rather explain to a 12-year-old writing code for the first
> time?

for func in funcs:
    func()

Because it is explicit and readable and matches the english description
"for every function in functions: call that function" very closely while a
list comprehension or your "perlish" line noise is much more magic to
explain and harder to remember.

Ciao,
        Marc 'BlackJack' Rintsch
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to