Iterators, Generators and You
Kshitij Saraogi (~kshitij10496) |
4
Description:
Iterators in Python aren't a matter of type but of the protocol i.e. any class that implements this protocol can be iterated over. This talk will present an overview of the all-encompassing iteration features in Python and how the Iterator pattern is built into the Python language so you never need to implement it by hand.
Iteration is fundamental to data processing and when scanning datasets that don’t fit in memory (say of size 1TB), we need a way to fetch the items lazily, that is, one at a time and on demand. This saves memory and may avoid useless processing as well. And this exactly is what the Iterator pattern about.
Python Generators are often considered a somewhat advanced topic, but they are actually very easy to understand once you start using them on a regular basis. This talk will also introduce you to a pragmatic use-case of generators in Python codebase.
The presentation will lay the foundations of building concepts related to iteration and proceed to empower every developer to leverage their power. Here is the walkthrough all the topics I intend to cover:
- Basic primer of different ways one can iterate over the built-in type objects
- What are the differences between the terms
iterable
,iterator
andgenerator
? - Examples of
iterable
,iterator
,generator function
andtuple comprehensions
- How can one make user-defined objects iterable?
- What are the
Iterable
andIterator
interfaces? - How to implement the
Iterator
protocol? - How can one leverage the power of a
generator
to implement theIterator
protocol?
- What are the
- Additional benefits of making our objects
iterable
.- tuple unpacking
- built-in functions which consume iterables
- Few
itertools
examples
Prerequisites:
Any person who meets all the following criteria should be able to follow this talk with ease:
- You have written at least a single Python
for
loop. - You know how to write a
class
in Python - You have heard about
generators
and would like to know where you can potentially use them - Interested in writing cleaner and Pythonic code
Content URLs:
Outline for the slides
I intend to present the slides via Jupyter notebook (using Slides extensions) as I prefer a more hands-on approach for the talk.
Speaker Info:
My name is Kshitij Saraogi. I am a Fourth-year undergraduate at Indian Institute of Technology Kharagpur, India pursuing Mathematics and Computing. I have been programming in Python more than 2 years now and have been contributing to the Open Source community for the past couple of years. I was a Google Summer of Code Student in 2017 under SymPy where I worked on equation solving modules.