Files
python/reference/concept-exercise-mapping.md

162 KiB

Python reference

Python is an interpreted, dynamically (but strongly) typed, and garbage-collected general programming language that has become extremely popular due to its readability, low barrier for entry, and exceptionally deep ecosystem of libraries and tools. Python is object-based, but is inherently multi-paradigm and has drawn together influences from a wide range of programming languages, including ABC, Haskell, Lisp, and Modula-3. It is ideal for prototyping and ad-hoc tasks, but also sees wide use in scientific computing, web development, and automation.

Below are concepts that were extracted/identified in Python based on Exercism's V2 exercises. Resources used include:


Unique to Python

"Pythonic"/Python Community

Baseline

Concepts Introduced in the "Basics" Exercise (_Guido's Gorgeous Lasagna_):

General

Concepts needed for a good working understanding of the language

Current "Core" Concepts:

Detailed

Concepts needed for a deeper understanding/fluency

"Intermediate" Concepts

Object-Oriented Specific

OOP-Specific/Class Oriented Concepts

Specialized

(These are probably outside scope of an Exercism Concept exercise, but might make good longer/practice exercises that recieve mentoring)

Advanced/Specialized Concepts

These datatypes will very rarely be encountered in the wild, the first because it's more of an internal implementation detail and the second because it's hyper-specific:


Implementations in Progress

Expect this table to be updated as larger concepts are broken down or additional concepts/exercises are identified.

See the Python Exercises page for committed/planned on website concept & practice exercises.

Below are currently identified concepts needing:

  1. Issues logged (TBD issue entry)
  2. Concept & About documents written (starred concepts - links are to stub files)
  3. PRs written for a concept exericise (the issue is listed for design, but there is no exercise name linked)
  4. Possible Imrovements (check github for additional improvement issues)

Concept Includes About & Introduction Exercise Prerequisites Design./Issue Status/PR
list-methods
Topics
about.md🔅introduction.md Chaitanas Colossal Coaster 🎢
Needs
  • lists
.meta folder WIP
numbers
Topics
about.md🔅introduction.md Currency Exchange 💰 basics .meta folder WIP
lists
Topics
about.md🔅introduction.md Elyses Enchantments
Needs
  • comparisons
  • conditionals
  • strings
.meta folder WIP
bools
Topics
about.md🔅introduction.md Ghost Gobble Arcade Game 👻 basics .meta folder WIP
basics
Topics
about.md🔅introduction.md Guidos Gorgeous Lasagna None .meta folder WIP
dicts
Topics
about.md🔅introduction.md Inventory Management 📋
Needs
  • loops
  • lists
  • tuples
.meta folder WIP
string-methods
Topics
about.md🔅introduction.md Litte Sister's Essay 📓
Needs
  • basics
  • strings
.meta folder WIP
enums
Topics
  • enums
about.md🔅introduction.md Log Levels 💻
Needs
  • classes
  • conditionals
  • loops
  • list-comprehensions
  • sequences
  • string-formatting
  • string-methods
  • tuples
.meta folder WIP
loops
Topics
about.md🔅introduction.md Making the Grade 🈴
Needs
  • basics
  • comparisons
  • conditionals
  • lists
  • strings
.meta folder WIP
string-formatting
Topics
about.md🔅introduction.md Pretty Leaflet 🍃
Needs
  • basics
  • strings
  • string-methods
.meta folder WIP
strings
Topics
about.md🔅introduction.md Processing Logs ⚙ basics N/A WIP
none
Topics
about.md🔅introduction.md Restaurant Rozalynn 🥘
Needs
  • bools
  • conditionals
  • functions
  • dict-methods
  • list-methods
  • loops
.meta folder WIP
tuples
Topics
about.md🔅introduction.md Tisbury Treasure Hunt 🧭
Needs
  • basics,bools,loops
  • numbers,strings
.meta folder WIP
conditionals
Topics
about.md🔅introduction.md conditionals (Story TBD) ⚖ basics .metaf older Draft - content missing.
class-composition*
Topics
about.md🔅introduction.md
Needs
  • basics
  • booleans
  • classes
  • class-customization
  • class-inheritance
  • comparisons
  • decorators
  • dicts
  • functions
  • higher-order functions
  • iteration
  • lists
  • numbers
  • sequences
  • sets
  • strings
  • tuples
#2352 Pending
import*
Topics
about.md🔅introduction.md ON HOLD ON HOLD
context-manager-customization*
Topics
  • with
  • contextlib
  • @contextlib.contextmanager
  • contextlib.closing()
  • contextlib.nullcontext()
  • contextlib.suppress
  • conextlib.redirect_stdout()
  • contextlib.redirect_stderr()
  • class contextlib.ContextDecorator
  • context-handling
  • context-managers
  • context-manager types
about.md🔅introduction.md
Needs
  • basics
  • bools
  • classes
  • class customization
  • class-inheritance
  • comparisons
  • rich-comparisons
  • decorators
  • dicts
  • dict-methods
  • raising-and-handling-errors
  • functions
  • functional tools
  • generators
  • higher-order-functions
  • iteration
  • lists
  • list-methods
  • loops
  • numbers
  • sequences
  • sets
  • strings
  • string-methods
  • testing
  • tuples
  • with-statement
#2370 Pending
with-statement*
Topics
  • with
  • context-handling
  • context-managers
  • finally
  • file handling
about.md🔅introduction.md
Needs
  • basics
  • bools
  • comparisons
  • dicts
  • dict-methods
  • functions
  • functional-tools
  • generators
  • higher-order-functions
  • iteration
  • lists
  • list-methods
  • loops
  • numbers
  • sequences
  • sets
  • strings
  • string-methods
  • tuples
#2369 Pending
itertools*
Topics
  • itertools
  • count()
  • cycle()
  • repeat()
  • accumulate()
  • product()
  • chain() & chain.from_iterable()
  • groupby()
  • islice()
  • zip_longest() and the zip() built-in
  • permutations()
  • combinations()
about.md🔅introduction.md
Needs
  • basics
  • booleans
  • comparisons
  • rich-comparisons
  • dicts
  • dict-methods
  • functions
  • functional tools
  • generators
  • higher-order functions
  • Identity methods is and is not
  • iteration
  • lists
  • list-methods
  • loops
  • numbers
  • sequences
  • sets
  • strings
  • string-methods
  • tuples
#2368 Pending
iterators*
Topics
  • Iterators
  • iterator protocol
  • __next_()
  • __stopiteration__()
  • __iter__()
  • iter()
  • __getitem__()
about.md🔅introduction.md
Needs
  • basics
  • booleans
  • classes
  • comparisons
  • rich-comparisons
  • decorators
  • descriptors
  • dicts
  • dict-methods
  • functions
  • higher-order-functions
  • lists
  • list-methods
  • numbers
  • sequences
  • sets
  • strings
  • string-methods
  • tuples
#2367 Pending
functools*
Topics
  • Partial application
  • single dispatch
  • higher-order functions
  • functools.partial()
  • partial.func
  • partial.args
  • partial.keywords
  • functools.update_wrapper()
  • funtools.cache()
  • @functools.cached_property()
  • @functools.lru_cache()
  • @functools.total_ordering
  • @functools.singledispatch
  • @.register()
  • @functools.wraps()
  • class functools.partialmethod()
  • class functools.singledispatchmethod()
about.md🔅introduction.md
Needs
  • basics
  • bools
  • classes
  • class-customization
  • class-components
  • comparisons
  • rich-comparisons
  • decorators
  • descriptors
  • dicts
  • dict-methods
  • functions
  • function-arguments
  • higher-order-functions
  • iteration
  • lists
  • list-methods
  • numbers
  • sequences
  • sets
  • strings
  • string-methods
  • tuples
#2366 Pending
descriptors*
Topics
  • descrptor protocol
  • descriptors
  • private variables
  • name mangling
  • data descriptors
  • non-data descriptors
  • class attributes
  • class members
about.md🔅introduction.md
Needs
  • basics
  • booleans
  • classes
  • class-customization
  • class-composition
  • class-inheritance
  • comparisons
  • decorators
  • dicts
  • iteration
  • lists
  • numbers
  • sequences
  • sets
  • strings
  • tuples
#2365 Pending
function-arguments*
Topics
about.md🔅introduction.md
Needs
  • basics
  • booleans
  • comparisons
  • dicts
  • dict-methods
  • functions
  • iteration
  • lists
  • list-methods
  • numbers
  • sequences
  • sets
  • strings
  • string-methods
  • tuples
#2354 Pending
unpacking-and-multiple-assignment*
Topics
about.md🔅introduction.md
Needs
  • basics
  • bools
  • comparisons
  • dicts
  • dict-methods
  • functions
  • function-arguments
  • higher-order-functions
  • functional tools
  • Identity methods is and is not
  • iteration
  • lists
  • list-methods
  • numbers
  • sequences
  • sets
  • strings
  • string-methods
  • tuples
#2360 Pending
functional-tools*
Topics
about.md🔅introduction.md
Needs
  • basics
  • bools
  • comparisons
  • dicts
  • dict-methods
  • functions
  • function-arguments
  • higher-order-functions
  • iteration
  • lists
  • list-methods
  • numbers
  • sequences
  • sets
  • strings
  • string-methods
  • tuples
#2359 Pending
anonymous-functions*
Topics
about.md🔅introduction.md
Needs
  • basics
  • booleans
  • comparisons
  • dicts
  • dict-methods
  • functions
  • function-arguments
  • higher-order functions
  • iteration
  • lists
  • list-methods
  • numbers
  • sequences
  • sets
  • strings
  • string-methods
  • tuples
#2357 Pending
higher-order-functions*
Topics
about.md🔅introduction.md
Needs
  • basics
  • booleans
  • comparisons
  • dicts
  • dict-methods
  • functions
  • function-arguments
  • iteration
  • lists
  • list-methods
  • numbers
  • sequences
  • sets
  • strings
  • string-methods
  • tuples
#2355 Pending
class-inheritance*
Topics
about.md🔅introduction.md
Needs
  • basics
  • booleans
  • classes
  • class-customization
  • comparisons
  • decorators
  • dicts
  • functions
  • higher-order-functions
  • iteration
  • lists
  • numbers
  • sequences
  • sets
  • strings
  • tuples
#2351 Pending
sets*
Topics
about.md🔅introduction.md
Needs
  • basics
  • booleans
  • comparisons
  • dicts
  • lists
  • loops
#2296 Pending
other-comprehensions*
Topics
about.md🔅introduction.md
Needs
  • basics
  • bools
  • conditionals
  • comparisons
  • loops
  • iteration
#2294 Pending
generators*
Topics
about.md🔅introduction.md
Needs
  • conditionals
  • dicts
  • functions
  • higher-order-functions
  • lists
  • loops
  • iteration
  • iterators
  • sequences
#2293 Pending
sequences*
Topics
about.md🔅introduction.md
Needs
  • basics
  • iteration
  • lists
  • list-methods
  • sets
  • strings
  • tuples
#2290 Pending
complex-numbers*
Topics
about.md🔅introduction.md
Needs
  • basics
  • bools
  • numbers
#2208 Issue needs re-write.
rich-comparisons*
Topics
about.md🔅introduction.md
Needs
  • basics
  • booleans
  • classes
  • class-customization
  • class-inheritance
  • class-composition
  • comparisons
  • dicts
  • dict-methods
  • iteration
  • lists
  • list-methods
  • numbers
  • operator-overloading
  • sequences
  • sets
  • strings
  • string-methods
  • tuples
#2287 Pending
comparisons*
Topics
about.md🔅introduction.md
Needs
  • basics
  • bools
  • dicts
  • lists
  • sets
  • strings
  • tuples
  • numbers
  • iteration
#2288 Pending
generator-expressions*
Topics
about.md🔅introduction.md
Needs
  • basics
  • conditionals
  • comparisons
  • loops
  • generators
  • iterators
  • iteration
  • list-comprehensions
  • other-comprehensions
#2292 Pending
list-comprehensions*
Topics
about.md🔅introduction.md
Needs
  • basics
  • bools
  • comparisons
  • conditionals
  • lists
  • list-methods
  • loops
  • iteration
  • sequences
#2295 Pending
bytes*
Topics
about.md🔅introduction.md TBD TBD TBD
class-interfaces*
Topics
  • Multiple Inheritance
  • MRO
  • Abstract Base Clases
about.md🔅introduction.md TBD TBD TBD
collections*
Topics
  • namedtuple()
  • Counter
  • dequeue
  • defaultdict
  • OrderedDict
  • ChainMap
about.md🔅introduction.md TBD TBD TBD
dataclasses-and-namedtuples*
Topics
  • dataclasses
  • @dataclass
  • collections.namedtuple() - decorators
about.md🔅introduction.md
Needs
  • basics
  • booleans
  • classes
  • class-customization
  • comparisons
  • decorators
  • dicts
  • iteration
  • lists
  • numbers
  • sequences
  • sets
  • strings
  • tuples
#2361 Pending
decorators*
Topics
about.md🔅introduction.md
Needs
  • basics
  • bools
  • comparisons
  • dicts
  • dict-methods
  • functions
  • function-arguments
  • higher-order-functions
  • iteration
  • lists
  • list-methods
  • numbers
  • sequences
  • sets
  • strings
  • string-methods
  • tuples
#2356 Pending
functions*
Topics
  • Call semantics
  • Namespaces
  • callable objects
  • scope
  • nested functions
  • closures
  • return
  • global
  • nonlocal
  • "first class" functions
  • function attributes
about.md🔅introduction.md
Needs
  • basics
  • bools
  • comparisons
  • dicts
  • dict-methods
  • iteration
  • lists
  • list-methods
  • numbers
  • sequences
  • sets
  • strings
  • string-methods
  • tuples
#2353 Pending
class-customization*
Topics
about.md🔅introduction.md
Needs
  • basics
  • booleans
  • classes
  • comparisons
  • decorators
  • dicts
  • functions
  • higher-order-functions
  • iteration
  • lists
  • numbers
  • sequences
  • sets
  • strings
  • tuples
#2350 Pending
classes*
Topics
about.md🔅introduction.md
Needs
  • basics
  • bools
  • comparisons
  • dicts
  • iteration
  • lists
  • numbers
  • sequences
  • sets
  • strings
  • tuples
#2349 Pending
dict-methods*
Topics
about.md🔅introduction.md
Needs
  • basics
  • bools
  • conditionals
  • comparisons
  • dicts
  • lists
  • loops
  • numbers
  • strings
  • tuples
#2348 Pending
aliasing*
Topics
about.md🔅introduction.md TBD TBD TBD
binary data* TBD about.md🔅introduction.md TBD TBD TBD
bitflags*
Topics
about.md🔅introduction.md TBD TBD TBD
bitwise-operators*
Topics
about.md🔅introduction.md TBD TBD TBD
iteration*
Topics
about.md🔅introduction.md TBD TBD TBD
memoryview*
Topics
about.md🔅introduction.md TBD TBD TBD
number-variations*
Topics
about.md🔅introduction.md TBD TBD TBD
operator-overloading*
Topics
about.md🔅introduction.md TBD TBD TBD
raising-and-handling-errors*
Topics
about.md🔅introduction.md TBD TBD TBD
regular-expressions*
Topics
about.md🔅introduction.md TBD TBD TBD
testing*
Topics
about.md🔅introduction.md TBD TBD TBD
text-processing* TBD about.md🔅introduction.md TBD TBD TBD
type-hinting*
Topics
about.md🔅introduction.md TBD TBD TBD
unicode-regular-expressions*
Topics
  • regular expressions
  • unicode
  • third-party libraries
  • regex lib
about.md🔅introduction.md TBD TBD TBD
user-defined-errors*
Topics
about.md🔅introduction.md TBD TBD TBD
walrus-operator*
Topics
  • assignment expression, :=
about.md🔅introduction.md TBD TBD TBD
string-methods-splitting*
Topics
about.md🔅introduction.md TBD TBD TBD
*general Composition NA NA NA NA NA
*general Data Structures NA NA NA NA NA
*general Encapsulation NA NA NA NA NA
*general Interfaces NA NA NA NA NA
*general Lookup efficiency NA NA NA NA NA
*general Mutation NA NA NA NA NA
*general Mutability in Python NA NA NA NA NA
*general Polymorphism NA NA NA NA NA
*general Recursive data structures NA NA NA NA NA
*general Scope NA NA NA NA NA
*general Standard Library NA NA NA NA NA
*general State NA NA NA NA NA
*no stand-alone Duck Typing NA Multiple Multiple Multiple NA
*no stand-alone Dynamic Typing NA Multiple Multiple Multiple NA
*no stand-alone del NA Multiple Multiple Multiple NA
*no stand-alone Expressions NA Multiple Multiple Multiple NA
*no stand-alone Identity testing NA Multiple Multiple Multiple NA
*no stand-alone Operators NA Multiple Multiple Multiple NA
*no stand-alone Operator precedence NA Multiple Multiple Multiple NA
*no stand-alone Order of Evaluation NA Multiple Multiple Multiple NA
*no stand-alone type NA Multiple Multiple Multiple NA
*no stand-alone type conversion NA Multiple Multiple Multiple NA
*no stand-alone Immutability in Python NA Multiple Multiple Multiple NA

Concepts flagged as general are broad enough that we are questioning if they need a specific concept exercise.
Concepts flagged no stand alone are explained/utilized across multiple concept exercises.