A crash course for future pythonistas
At Shiphero. We use Python as one of our main technologies. It’s a powerful and pragmatic programming language that shines when you understand its way of doing, the so-called “pythonic” design and code.
We want to give this “workshop” (in the sense that it could mutate on its way, driven by the questions or interests that arise) as an introduction to give new developers the fundamental concepts, techniques and tools to become a good python programmer, sowing the skills to continue learning on its own.
The topics not covered during the sessions are marked with an emoji.
- Built in data types: numbers
- Bytes, and strings. String interpolation, f-strings.
- Tuples, lists, dictionaries, sets.
- Packing/Unpacking, indexing, slicing. Mutability, sequences.
- Flow control: if, for, while.
- Exception handling.
- Comprehensions
- Function definitions. Positional and keyword arguments. Flexible arguments. Keyword only.
- Typing. Python annotations: type hints.
- Generators.
- Context managers
- The file protocol. open, pathlib.
- Few useful builtin: zip, range, enumerate, sorted
- Project layout: modules, packages, imports.
- Dive into the standard lib: collections, itertools, functools, datetime, csv, json, pickle, argparse
- Beyond the stdlib: more_itertools, requests, docopt. 🤷♂️
- Data model. Sequences, generators, iterators and iterables in detail
- Other nice “magic methods”
- Duck typing. Multiple inheritance.
- Abstract Base Classes 🤷♂️
- Callable classes.
- Properties and descriptors.
- Decorators
- Dataclasses and namedtuples.
- Introduction to higher-level metaprogramming features. 🤷♂️
- Debugging with pdb/ipdb.
- Pytest as framework and runner. Dependency injection, parametrization.
- Mock: patching, side_effects 🤷♂️, autospec 🤷♂️.
- Simple tools for time and memory profiling. 🤷♂️
- Concurrent basics: threading, multiprocess, concurrent.futures.
- Asyncio. Main concepts.