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_):
-
- TODO: Explain # syntax in Python
-
Statements
- TODO: Explain the importance of statements in Python
General
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
Detailed
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
Object-Oriented Specific
OOP-Specific/Class Oriented Concepts
-
- Meta Classes
- [Virtual Base Classes]
- [Abstract Base Classes]
- [
.__subclasshook__()] - [
.register()]
- Duck Typing
- Meta Classes
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:
- 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 |
.metaf 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.