Namespace and Scope Rules
This section discusses rules for name binding and lookup. See also Section 1.7.2.1 and Section 1.7.2.2 earlier, in Section 1.7. In all cases, names are created when first assigned but must already exist when referenced. Qualified and unqualified names are resolved differently.
Qualified Names: Object Namespaces
Qualified names (X
, in
object.X
) are known as attributes and live in
object namespaces. Assignments in some lexical scopes[4] initialize object
namespaces (modules, classes).
Assignment: object.X = value
Creates or alters the attribute name
X
in the namespace of theobject
being qualified.Reference: object.X
Searches for the attribute name
X
in theobject
, then all accessible classes above it (for instances and classes). This is the definition of inheritance.
Unqualified Names: Lexical Scopes
Unqualified names (X
) involve lexical scope rules.
Assignments bind such names to the local scope, unless they are
declared global.
Assignment: X = value
Makes name
X
local: creates or changes nameX
in the current local scope by default. IfX
is declared global, creates or changes nameX
in the enclosing module’s scope. Local variables are stored in the call stack for quick access.Reference: X
Prior to Release 2.2, looks for name
X
in at most three scopes: the current local scope (function), then the current global scope (module), then the built-in scope (module
_ _builtin_ _
). Local and global scope contexts are defined in Table 1-16.In Release 2.2 and later, ...
Get Python Pocket Reference, Second Edition 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.