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:
"Pythonic"/Python Community
Concepts Introduced in the "Basics" Exercise (_Guido's Gorgeous Lasagna_):
-
- TODO: Explain # syntax in Python
-
Statements
- TODO: Explain the importance of statements in Python
Concepts needed for a good working understanding of the language
Current "Core" Concepts:
-
Numbers
-
- TODO: Discuss the interactive Python interpreter
-
Type conversion TODO: Casting between types in Python can be a bit unclear; this will need expansion
Concepts needed for a deeper understanding/fluency
"Intermediate" Concepts
-
Aliasing
-
Context managers
-
- TODO:
functools.partial
- TODO:
-
- TODO: explain limitations of recursion in Python, ie
RecursionLimit
- TODO: explain limitations of recursion in Python, ie
OOP-Specific/Class Oriented Concepts
-
- Meta Classes
- [Virtual Base Classes]
- [Abstract Base Classes]
- [
.__subclasshook__()
] - [
.register()
]
- Duck Typing
- Meta Classes
(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:
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.
- Issues logged (TBD issue entry)
- Concept & About documents written (starred concepts - links are to stub files)
- PRs written for a concept exericise (the issue is listed for design, but there is no exercise name linked)
- 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
|
.meta folder |
WIP |
numbers | Topics
|
about.mdπ introduction.md | Currency Exchange π° | basics |
.meta folder |
WIP |
lists | Topics |
about.mdπ introduction.md | Elyses Enchantments β¨ | Needs
|
.meta folder |
WIP |
bools | about.mdπ introduction.md | Ghost Gobble Arcade Game π» | basics |
.meta folder |
WIP | |
basics | about.mdπ introduction.md | Guidos Gorgeous Lasagna | None | .meta folder |
WIP | |
dicts | Topics |
about.mdπ introduction.md | Inventory Management π | Needs
|
.meta folder |
WIP |
string-methods | Topics |
about.mdπ introduction.md | Litte Sister's Essay π | Needs
|
.meta folder |
WIP |
enums | Topics
|
about.mdπ introduction.md | Log Levels π» | Needs
|
.meta folder |
WIP |
loops | about.mdπ introduction.md | Making the Grade π΄ | Needs
|
.meta folder |
WIP | |
string-formatting | Topics |
about.mdπ introduction.md | Pretty Leaflet π | Needs
|
.meta folder |
WIP |
strings | Topics |
about.mdπ introduction.md | Processing Logs β | basics |
N/A | WIP |
none | Topics |
about.mdπ introduction.md | Restaurant Rozalynn π₯ | Needs
|
.meta folder |
WIP |
tuples | Topics |
about.mdπ introduction.md | Tisbury Treasure Hunt π§ | Needs
|
.meta folder |
WIP |
conditionals | Topics |
conditionals (Story TBD) β | basics |
.meta f older |
Draft - content missing. | |
class-composition* | Topics
|
about.mdπ introduction.md | Needs
|
#2352 | Pending | |
import* | about.mdπ introduction.md | ON HOLD | ON HOLD | |||
context-manager-customization* | Topics
|
about.mdπ introduction.md | Needs
|
#2370 | Pending | |
with-statement* | about.mdπ introduction.md | Needs
|
#2369 | Pending | ||
itertools* | Topics
|
about.mdπ introduction.md | Needs
|
#2368 | Pending | |
iterators* | Topics
|
about.mdπ introduction.md | Needs
|
#2367 | Pending | |
functools* | Topics
|
about.mdπ introduction.md | Needs
|
#2366 | Pending | |
descriptors* | Topics
|
about.mdπ introduction.md | Needs
|
#2365 | Pending | |
function-arguments* | Topics
|
about.mdπ introduction.md | Needs
|
#2354 | Pending | |
unpacking-and-multiple-assignment* | Topics
|
about.mdπ introduction.md | Needs
|
#2360 | Pending | |
functional-tools* | about.mdπ introduction.md | Needs
|
#2359 | Pending | ||
anonymous-functions* | Topics |
about.mdπ introduction.md | Needs
|
#2357 | Pending | |
higher-order-functions* | Topics
|
about.mdπ introduction.md | Needs
|
#2355 | Pending | |
class-inheritance* | Topics
|
about.mdπ introduction.md | Needs
|
#2351 | Pending | |
sets* | about.mdπ introduction.md | Needs
|
#2296 | Pending | ||
other-comprehensions* | about.mdπ introduction.md | Needs
|
#2294 | Pending | ||
generators* | Topics |
about.mdπ introduction.md | Needs
|
#2293 | Pending | |
sequences* | Topics
|
about.mdπ introduction.md | Needs
|
#2290 | Pending | |
complex-numbers* | about.mdπ introduction.md | Needs
|
#2208 | Issue needs re-write. | ||
rich-comparisons* | Topics
|
about.mdπ introduction.md | Needs
|
#2287 | Pending | |
comparisons* | about.mdπ introduction.md | Needs
|
#2288 | Pending | ||
generator-expressions* | Topics |
about.mdπ introduction.md | Needs
|
#2292 | Pending | |
list-comprehensions* | Topics
|
about.mdπ introduction.md | Needs
|
#2295 | Pending | |
bytes* | about.mdπ introduction.md | TBD | TBD | TBD | ||
class-interfaces* | Topics
|
about.mdπ introduction.md | TBD | TBD | TBD | |
collections* | Topics
|
about.mdπ introduction.md | TBD | TBD | TBD | |
dataclasses-and-namedtuples* | Topics
|
about.mdπ introduction.md | Needs
|
#2361 | Pending | |
decorators* | Topics
|
about.mdπ introduction.md | Needs
|
#2356 | Pending | |
functions* | Topics
|
about.mdπ introduction.md | Needs
|
#2353 | Pending | |
class-customization* | Topics
|
about.mdπ introduction.md | Needs
|
#2350 | Pending | |
classes* | Topics |
about.mdπ introduction.md | Needs
|
#2349 | Pending | |
dict-methods* | Topics |
about.mdπ introduction.md | Needs
|
#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* | 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
|
about.mdπ introduction.md | TBD | TBD | TBD | |
user-defined-errors* | Topics
|
about.mdπ introduction.md | TBD | TBD | TBD | |
walrus-operator* | Topics
|
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.