annotate Doc/library/symtable.rst @ 54294:dba767bc3155 legacy-trunk

remove mention of old ctypes version
author Benjamin Peterson <benjamin@python.org>
date Sat, 23 May 2009 20:59:09 +0000
parents c8630f730907
children 127d623396ab
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
48252
b60e0928db3e Review symtable docs.
Georg Brandl <georg@python.org>
parents: 48247
diff changeset
1 :mod:`symtable` --- Access to the compiler's symbol tables
b60e0928db3e Review symtable docs.
Georg Brandl <georg@python.org>
parents: 48247
diff changeset
2 ==========================================================
48247
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
3
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
4 .. module:: symtable
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
5 :synopsis: Interface to the compiler's internal symbol tables.
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
6
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
7 .. moduleauthor:: Jeremy Hylton <jeremy@alum.mit.edu>
56791
8309ad6ae4c0 Merged revisions 68776-68777 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48315
diff changeset
8 .. sectionauthor:: Benjamin Peterson <benjamin@python.org>
48247
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
9
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
10
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
11 Symbol tables are generated by the compiler from AST just before bytecode is
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
12 generated. The symbol table is responsible for calculating the scope of every
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
13 identifier in the code. :mod:`symtable` provides an interface to examine these
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
14 tables.
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
15
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
16
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
17 Generating Symbol Tables
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
18 ------------------------
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
19
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
20 .. function:: symtable(code, filename, compile_type)
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
21
48252
b60e0928db3e Review symtable docs.
Georg Brandl <georg@python.org>
parents: 48247
diff changeset
22 Return the toplevel :class:`SymbolTable` for the Python source *code*.
48247
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
23 *filename* is the name of the file containing the code. *compile_type* is
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
24 like the *mode* argument to :func:`compile`.
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
25
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
26
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
27 Examining Symbol Tables
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
28 -----------------------
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
29
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
30 .. class:: SymbolTable
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
31
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
32 A namespace table for a block. The constructor is not public.
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
33
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
34 .. method:: get_type()
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
35
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
36 Return the type of the symbol table. Possible values are ``'class'``,
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
37 ``'module'``, and ``'function'``.
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
38
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
39 .. method:: get_id()
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
40
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
41 Return the table's identifier.
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
42
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
43 .. method:: get_name()
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
44
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
45 Return the table's name. This is the name of the class if the table is
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
46 for a class, the name of the function if the table is for a function, or
48256
ff85653545f5 a few improvements
Benjamin Peterson <benjamin@python.org>
parents: 48252
diff changeset
47 ``'top'`` if the table is global (:meth:`get_type` returns ``'module'``).
48247
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
48
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
49 .. method:: get_lineno()
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
50
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
51 Return the number of the first line in the block this table represents.
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
52
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
53 .. method:: is_optimized()
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
54
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
55 Return ``True`` if the locals in this table can be optimized.
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
56
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
57 .. method:: is_nested()
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
58
48256
ff85653545f5 a few improvements
Benjamin Peterson <benjamin@python.org>
parents: 48252
diff changeset
59 Return ``True`` if the block is a nested class or function.
48247
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
60
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
61 .. method:: has_children()
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
62
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
63 Return ``True`` if the block has nested namespaces within it. These can
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
64 be obtained with :meth:`get_children`.
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
65
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
66 .. method:: has_exec()
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
67
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
68 Return ``True`` if the block uses ``exec``.
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
69
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
70 .. method:: has_import_start()
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
71
48252
b60e0928db3e Review symtable docs.
Georg Brandl <georg@python.org>
parents: 48247
diff changeset
72 Return ``True`` if the block uses a starred from-import.
48247
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
73
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
74 .. method:: get_identifiers()
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
75
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
76 Return a list of names of symbols in this table.
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
77
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
78 .. method:: lookup(name)
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
79
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
80 Lookup *name* in the table and return a :class:`Symbol` instance.
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
81
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
82 .. method:: get_symbols()
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
83
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
84 Return a list of :class:`Symbol` instances for names in the table.
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
85
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
86 .. method:: get_children()
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
87
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
88 Return a list of the nested symbol tables.
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
89
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
90
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
91 .. class:: Function
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
92
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
93 A namespace for a function or method. This class inherits
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
94 :class:`SymbolTable`.
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
95
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
96 .. method:: get_parameters()
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
97
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
98 Return a tuple containing names of parameters to this function.
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
99
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
100 .. method:: get_locals()
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
101
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
102 Return a tuple containing names of locals in this function.
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
103
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
104 .. method:: get_globals()
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
105
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
106 Return a tuple containing names of globals in this function.
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
107
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
108 .. method:: get_frees()
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
109
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
110 Return a tuple containing names of free variables in this function.
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
111
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
112
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
113 .. class:: Class
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
114
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
115 A namespace of a class. This class inherits :class:`SymbolTable`.
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
116
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
117 .. method:: get_methods()
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
118
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
119 Return a tuple containing the names of methods declared in the class.
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
120
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
121
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
122 .. class:: Symbol
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
123
48252
b60e0928db3e Review symtable docs.
Georg Brandl <georg@python.org>
parents: 48247
diff changeset
124 An entry in a :class:`SymbolTable` corresponding to an identifier in the
48247
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
125 source. The constructor is not public.
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
126
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
127 .. method:: get_name()
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
128
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
129 Return the symbol's name.
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
130
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
131 .. method:: is_referenced()
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
132
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
133 Return ``True`` if the symbol is used in its block.
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
134
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
135 .. method:: is_imported()
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
136
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
137 Return ``True`` if the symbol is created from an import statement.
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
138
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
139 .. method:: is_parameter()
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
140
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
141 Return ``True`` if the symbol is a parameter.
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
142
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
143 .. method:: is_global()
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
144
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
145 Return ``True`` if the symbol is global.
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
146
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
147 .. method:: is_local()
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
148
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
149 Return ``True`` if the symbol is local to its block.
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
150
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
151 .. method:: is_free()
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
152
48252
b60e0928db3e Review symtable docs.
Georg Brandl <georg@python.org>
parents: 48247
diff changeset
153 Return ``True`` if the symbol is referenced in its block, but not assigned
b60e0928db3e Review symtable docs.
Georg Brandl <georg@python.org>
parents: 48247
diff changeset
154 to.
48247
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
155
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
156 .. method:: is_assigned()
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
157
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
158 Return ``True`` if the symbol is assigned to in its block.
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
159
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
160 .. method:: is_namespace()
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
161
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
162 Return ``True`` if name binding introduces new namespace.
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
163
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
164 If the name is used as the target of a function or class statement, this
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
165 will be true.
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
166
56805
c8630f730907 Merged revisions 70171,70183,70290,70292,70315,70438,70464 via svnmerge from
Georg Brandl <georg@python.org>
parents: 56791
diff changeset
167 For example::
c8630f730907 Merged revisions 70171,70183,70290,70292,70315,70438,70464 via svnmerge from
Georg Brandl <georg@python.org>
parents: 56791
diff changeset
168
c8630f730907 Merged revisions 70171,70183,70290,70292,70315,70438,70464 via svnmerge from
Georg Brandl <georg@python.org>
parents: 56791
diff changeset
169 >>> table = symtable.symtable("def some_func(): pass", "string", "exec")
c8630f730907 Merged revisions 70171,70183,70290,70292,70315,70438,70464 via svnmerge from
Georg Brandl <georg@python.org>
parents: 56791
diff changeset
170 >>> table.lookup("some_func").is_namespace()
c8630f730907 Merged revisions 70171,70183,70290,70292,70315,70438,70464 via svnmerge from
Georg Brandl <georg@python.org>
parents: 56791
diff changeset
171 True
c8630f730907 Merged revisions 70171,70183,70290,70292,70315,70438,70464 via svnmerge from
Georg Brandl <georg@python.org>
parents: 56791
diff changeset
172
48247
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
173 Note that a single name can be bound to multiple objects. If the result
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
174 is ``True``, the name may also be bound to other objects, like an int or
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
175 list, that does not introduce a new namespace.
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
176
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
177 .. method:: get_namespaces()
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
178
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
179 Return a list of namespaces bound to this name.
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
180
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
181 .. method:: get_namespace()
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
182
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
183 Return the namespace bound to this name. If more than one namespace is
9fb10f3d0f87 add some documentation for symtable
Benjamin Peterson <benjamin@python.org>
parents:
diff changeset
184 bound, a :exc:`ValueError` is raised.