Python is a dynamic and strongly typed object-oriented programming language.

Python supports multiple programming paradigms (imperative - object-oriented, procedural and declarative - functional, concurrent).

Python programs can be decomposed into modules, statements, expressions, and objects, as follows:

  1. Programs are composed of modules
  2. Modules contain statements
  3. Statements contain expressions
  4. Expressions create and process objects

This part’s chapters begin at the bottom, exploring both built-in objects and the expressions you can code to use them.

Assignment states are used to bind or rebind names to values and to modify attributes or items of mutable objects.

Names refer to objects, name are introduces by name binding operations.

Objects are assigned to names via the assignment operator =

Variables are written in snake_case

Constants are written in SCREAMING_SNAKE_CASE

A name (variables or constant) is not itself typed, and can be bounded/attached or reattached to different objects over its lifetime.