Confessions of a Python fanboy
Luis Zarrabeitia
kyrie at uh.cu
Thu Jul 30 17:57:48 EDT 2009
On Thursday 30 July 2009 04:41:57 pm Masklinn wrote:
> On 30 Jul 2009, at 22:23 , Jan Kaliszewski wrote:
> > 30-07-2009 o 13:36:49 Masklinn <masklinn at masklinn.net> wrote:
> >
> > I don't see any real limitation. What's wrong in:
> >
> > for localVar in container:
> > block
>
> Well what's wrong with using that rather than `map`, `filter` or a
> list comprehension?
As I understood the question, it was "was wrong in 'for var in container' in
comparison with ruby's container.each?"
What's the (semantic) difference between
for localVar in container:
block
and
container.each{|localVar| block}
?
(the sintactic difference is quite clear... if there is no semantic
difference, I'd rather use the first version!)
Map, filter and comprehensions have little to do with that (syntactic sugar
that may allow some optimizations, but that could otherwise be replaced by
the for loop).
> (and if you don't see what the limitations of
> `lambda` are, you probably very rarely use it)
I'm not the poster, but:
* I use lambdas, a lot.
* I "know" python lambdas are limited, compared with theoretical lambdas.
* I don't [usually] see that as a "limitation".
Most of the time, the limitation is the lack of multiline/multiexpression
lambdas. But I've never seen a case where I would /prefer/ to have a
multiline function definition inside a comprehension or method invocation,
instead of a named function defined two lines before it.
(The second famous limitation is the inability to use statements inside
lambdas... luckily, now that we have a ternary operator and a print function,
it is less limiting)
> > And ruby's container.each is very similar to Python's iter()
>
> Uh… not at all…
I agree with this. It should have said that they are equivalent in the sense
that they represent the iterator protocols of both languages, and nothing
more.
I'd like to ask, what "container.each" is, exactly? It looks like a function
call (as I've learned a few posts ago), but, what are its arguments? How the
looping "works"? Does it receive a "code" object that it has to execute?
Is .each some kind of magic keyword? (This has little to do with python or
the current thread, so feel free to reply off-list if you want to...)
Regards,
Luis.
--
Luis Zarrabeitia (aka Kyrie)
Fac. de Matemática y Computación, UH.
http://profesores.matcom.uh.cu/~kyrie
More information about the Python-list
mailing list