Yes, your code is the same as the first example generator with a single yield in a loop.
The same conversion for the later examples with multiple yield statements, try: except: or try: finally: will be much hairier, though.
HN user
Yes, your code is the same as the first example generator with a single yield in a loop.
The same conversion for the later examples with multiple yield statements, try: except: or try: finally: will be much hairier, though.
I stole that from here http://meyerweb.com/eric/css/edge/complexspiral/glassy.html
Thank you, I hadn't seen that. I've added that link to the bottom of my article.
That's a feature!
Seriously though, not being able to define a serialization method can be a limitation. However, it is always possible to turn a generator into an iterator class with whatever methods you like, but the code may end up looking totally different.
It should be possible to create the exact same classes dynamically, without using exec. The only advantage I can see of the exec is that the class template string makes it a little clearer what the equivalent "normal" class definition would look like.
There are other drawbacks to exec though, some people have disabled exec for security reasons and it's opaque to things like pypy.
You can use python -i to enter interactive mode after executing a script. Maybe I should clarify that part
Good point. I didn't address this adequately.
The usual #python response to people using the array module was to instead consider NumPy (with its excellent arrays) or use normal lists and PyPy to make it fast.