Skip to content

Shiphero/python-workshop

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

python-workshop

A crash course for future pythonistas

Introduction

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.

Videos

Agenda

The topics not covered during the sessions are marked with an emoji.

Python 101

  • 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. 🤷‍♂️

Pythonic object oriented programming

  • 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, testing and performance

  • 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 programming 🤷‍♂️

  • Concurrent basics: threading, multiprocess, concurrent.futures.
  • Asyncio. Main concepts.

About

A crash course for future pythonistas

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published