Chapter 13. Controlling Execution
Python directly exposes many of the mechanisms it uses internally.
This helps you understand Python at an advanced level, and means you
can hook your own code into such documented Python mechanisms and
control those mechanisms to some extent. For example, Chapter 7 covered the import
statement and the way Python arranges for built-ins to be made
implicitly visible. This chapter covers other advanced techniques
that Python offers for controlling execution, while Chapter 17 covers execution-control possibilities that
apply specifically to the three crucial phases of development:
testing, debugging, and profiling.
Dynamic Execution and the exec Statement
With Python’s
exec statement, it is possible to execute code
that you read, generate, or otherwise obtain during the running of a
program. The exec statement dynamically executes a
statement or a suite of statements. exec is a
simple keyword statement with the following syntax:
execcode[ inglobals[,locals]]
code can be a string, an open file-like
object, or a code object. globals and
locals are dictionaries. If both are
present, they are the global and local namespaces, respectively, in
which code executes. If only
globals is present,
exec uses globals in
the role of both namespaces. If neither
globals nor
locals is present,
code executes in the current scope.
Running exec in current scope is not good programming practice, since it can bind, rebind, or unbind any name. To keep things under control, ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access