[Tutor] How to extract numerator and denominator from fractions.Fraction(4, 32)?
Alan Gauld
alan.gauld at btinternet.com
Tue Aug 6 18:33:22 CEST 2013
On 06/08/13 10:01, Walter Prins wrote:
> py> def cr(): # Co-Routine.
> ... x = yield()
> ... while True:
> ... x = yield(x + 1)
> ...
> "send" and yield as akin to threaded execution, where cr() is like a
> thread that blocks at the yield call after creation, and then when you
> call on magic.send() the "thread" wakes up and continues and eventually
> returns another value
It's clever but I'm not keen on it overloading yield to do it.
yield as a word conveys (to me at least) the idea of returning a value
but not quite completely ending. This usage sounds like a different
concept and I'd have preferred a more explicit name - although I can't
think what!! Also I'm not keen on the argument/parameter mechanism
here either. Arguments are sent but not explicitly declared in the
receiver, that all feels rather un-pythonic to me. But I've only
skimmed it so far, I need to do some hands-on playing I think.
I am getting concerned that python is developing a lot of these
non-intuitive type features, almost because it can(*). A lot of it no
doubt scratches somebody's itch but its at the expense of making what
was a very easy to use language ever more complex. I'm not sure if i
would choose Python for my Learn to Program tutorial if I was starting
it these days - although I'm not sure what else is any better...
(*)The same thing happened with C++ between v2 and ISO
standardization - a lot of bells n' whistles were added which made C++
much more complex than was good for it (or for me as a programmer!).
Eventually you had to be a guru level coder to use it successfully.
Python hasn't got that far yet but it seems to be in danger of it.
--
Alan G
Author of the Learn to Program web site
http://www.alan-g.me.uk/
More information about the Tutor
mailing list