Skip to content

Instantly share code, notes, and snippets.

@rdenadai
Last active April 20, 2024 00:43
Show Gist options
  • Save rdenadai/6fa15aeaff3bf6845e0853c00b3e9ba5 to your computer and use it in GitHub Desktop.
Save rdenadai/6fa15aeaff3bf6845e0853c00b3e9ba5 to your computer and use it in GitHub Desktop.
My take into build a basic structure to dictate how to become a Python Expert ... from basic to specialist ?

Python Expert Path

Beginner

  • Basic syntax
    • Variables types:
      • bool, int, float, str, byte, complex, None
    • Conditionals:
      • if, else, elif, for, while, match
    • Functions: simple use, and known what first class citizen is (concept)
    • Data structures:
      • list, tuple, dict, set
    • Exception handling
  • File I/O
  • Compreensions: list, dict
  • f-strings

Intermediate

  • Debugger (without print)
  • pep8
  • Python package (pip)
  • Variable types:
    • bytearray, memoryview
  • Walrus operator :=
  • Type Annotations
    • Basic
  • Functions: *args | **kwargs
  • Other data structures: namedtuple, queue, enum, heapq
  • StandardLib: Decimal (float point errors), pickle
  • Context Manager
  • Object-Oriented
    • __init__ | __new__
    • dunder methods
    • Abstract Base Class
    • dataclasses
  • Iterators
  • Functional programming
    • Lambda
      • map, filter, reduce
    • Closure
  • Decorators
  • Compreensions: set

Advanced

  • StandardLib:
    • functools, itertools, bisect, collections, contextvars, tracemalloc
  • Generators
    • Generator expressions
  • Object-Oriented
    • __slots__
    • __mro__
    • property
    • Multiple Inheritance (Mixins)
  • Functional programming
    • functools.partial
    • Memoisation
    • Immutability
  • Paralelism and Concurrency
    • Process (ProcessPoolExecutor, SharedMemory)
    • Thread (ThreadPoolExecutor)
    • asyncio (TaskGroup, Exception Groups)

Specialist

  • Coroutines
  • StandardLib
    • ast
    • inspect
    • types
  • Type Annotations
    • Variadic Generics
    • Protocol
  • Object-Oriented
    • Descriptors
    • Metaclasses
  • Deploy and management of python packages
  • Memory Management
  • Interpreters (and environment around them)
    • CPython
    • Pypy
    • Pyston
  • CPython Internals
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment