Names refer to objects. Names are introduced by name binding
operations. Each occurrence of a name in the program text refers
to the binding of that name established in the innermost
function block containing the use. A block is a piece of Python
program text that is executed as a unit. The following are
blocks: a module, a function body, and a class definition. Each
command typed interactively is a block. A script file (a file
given as standard input to the interpreter or specified on the
interpreter command line the first argument) is a code block. A
script command (a command specified on the interpreter command
line with the ‘-c‘ option) is a code block. The string argument
passed to the built-in functions eval() and exec() is a code
block. A code block is executed in an execution frame. A frame
contains some administrative information (used for debugging)
and determines where and how execution continues after the code
block’s execution has completed. A scope defines the visibility
of a name within a block