python gripes survey
Ryan Lowe
ryanlowe0 at msn.com
Mon Aug 25 18:37:48 EDT 2003
"Josh" <joshway_without_spam at myway.com> wrote in message
news:bidr0d$p9g$1 at fred.mathworks.com...
> sismex01 at hebmex.com wrote:
> > [Afanasiy]
> >> Returning a struct in C is
> >> easier to deal with than returning a near-mystery tuple in Python.
> >>
>
> > You *really* *must* *be* *kidding*.
>
> > -gustavo
>
> It's really pretty easy:
>
> typedef struct {
> int x;
> int y;
> } T;
>
> T f() {
> T t = { 1, 2 };
> return t;
> }
>
> int main() {
> T t = f();
> return 0;
> }
>
> And arguably easier to deal with than Python in that the fields are
> named. I think that's all Afanasiy was getting at.
is it that hard to send a dictionary? i dont know how that compares to a
tuple in terms of speed/memory usage, but its not a whole lot harder to use
than a tuple.
def fruit() :
return {'apple' : 'A', 'orange' : 'B'}
>>> food = fruit()
>>> food['apple']
... 'A'
anyone have any more things they dont like or, better yet, feel are missing
from python? ive got a pretty big list going. ill post a link when i get it
uploaded.
"Andrew Dalke" <adalke at mindspring.com> wrote in message
news:P372b.1862$Jh2.521 at newsread4.news.pas.earthlink.net
[...]
> > > code blocks (like Smalltalk)
> >
> > is this what it sounds like? do you name a block of code and call it
like
> an
> > inline function with no parameters?
>
> Consider the following Ruby code
>
> [ 1, 3, 5 ].each { |i| puts i }
>
> The
> |i| puts i
> is an *unnamed* code block which does take parameters.
> The [] is a container, and [].each sends the code block to
> each of the elements in the container. See
> http://www.rubycentral.com/book/tut_containers.html
>
i looked into code blocks. they still seem a bit confusing, but from what i
learned i dont see any advantage over python's generators. for example take
these two versions of code that produces the fibonacci series:
RUBY
def fibUpTo(max)
a, b = 1, 1 # parallel assignment
while a <= max
yield i1
a, b = b, a+b
end
end
fibUpTo(1000) { |f| print f, " " }
PYTHON
def fibUpTo(max) :
a, b = 1, 1
while a <= max :
yield a
a, b = b, a+b
>>> for f in fibUpTo(1000) :
print f,
i think the python version is much more intuitive. are there more
complicated uses of code blocks that would make them more powerful than
python's generators? i think i read a PEP or something about adding the
ability to pass info into a generator. if this doesnt exist yet or ever,
that would probably be a good difference, but i cant think of a good example
to illustrate this...
More information about the Python-list
mailing list