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, ...
Get Python in a Nutshell now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.