In the spring of 2019 I had the opportunity to use some paid work time for learning something new.
I decided to spend the given time to brush up on my Python knowledge. I had some experience in programming with Python but not much and I didn't have a understanding of Python conventions or ecosystem.
Even though the slides are from over a decade ago and the Python version was 2.x at that time all the information is still applicable to current Python 3.x version as is or with minor changes.
I haven't worked with Python since the sessions but next time that I will, I'll first browse through these resorces.
I decided to spend the given time to brush up on my Python knowledge. I had some experience in programming with Python but not much and I didn't have a understanding of Python conventions or ecosystem.
Limited time frame
I had a limited time frame that was split to four sessions. In addition to the time given for each session I spent at least the same amount of time on preparing each session.First session, the basics
It was quite hard to find a resource that summarised Python basics on a sufficient level but I managed to find Alex Martinelli's slides Python for Programmers from 2007 that contained exactly what I was looking for.Even though the slides are from over a decade ago and the Python version was 2.x at that time all the information is still applicable to current Python 3.x version as is or with minor changes.
Second session, testing in Python
Python has a good support for automated tests and it wasn't too hard to find two good resources where to learn. First I read a short introduction to Python's unit testing libraries from the Hitchhiker's guide to Python. After that I went through a longer, more profound, tutorial from Real Python.Third session, functional programming in Python
I knew that Python supported functional programming concepts and the best resource that I could find was Python's own documentation that also explained some of the gotchas I ran into in my earlier Python programming experiments e.g. map function returns a iterator not a list or set or what ever was the input's type.Fourth and final session, asynchronous programming in Python
With the rise of FRP and the Reactive Manifesto I thought that introducing myself to Python's async IO would be a good idea. For me the Real Python's tutorial on async IO was the easiest to understand and I think it's quite comprehensive.Syllabus for Python for programmers
- Basics, Alex Martinelli's slides http://www.aleax.it/goo_py4prog.pdf
- Testing, the Hitchhiker's guide to Python https://docs.python-guide.org/writing/tests/ and Real Python's getting started with testing in Python https://realpython.com/python-testing/
- Functional programming, Python's own documentation https://docs.python.org/3.7/howto/functional.html
- Async IO, Real Python's tutorial on async IO https://realpython.com/async-io-python/
Conclusion
It took me around 6 hours to read and somewhat understand the contents of all the resources of the sessions. I already knew Python's syntax and had a solid understanding of other programming languages and I knew all the concepts that were covered.I haven't worked with Python since the sessions but next time that I will, I'll first browse through these resorces.