Add forgotten initialization. Fixes bug #120994, "Traceback with
[python/dscho.git] / Doc / ref / ref6.tex
blob083fd6863d8abebd9851b8e0d0a90dd74685b6b6
1 \chapter{Simple statements \label{simple}}
2 \indexii{simple}{statement}
4 Simple statements are comprised within a single logical line.
5 Several simple statements may occur on a single line separated
6 by semicolons. The syntax for simple statements is:
8 \begin{verbatim}
9 simple_stmt: expression_stmt
10 | assert_stmt
11 | assignment_stmt
12 | augmented_assignment_stmt
13 | pass_stmt
14 | del_stmt
15 | print_stmt
16 | return_stmt
17 | raise_stmt
18 | break_stmt
19 | continue_stmt
20 | import_stmt
21 | global_stmt
22 | exec_stmt
23 \end{verbatim}
25 \section{Expression statements \label{exprstmts}}
26 \indexii{expression}{statement}
28 Expression statements are used (mostly interactively) to compute and
29 write a value, or (usually) to call a procedure (a function that
30 returns no meaningful result; in Python, procedures return the value
31 \code{None}). Other uses of expression statements are allowed and
32 occasionally useful. The syntax for an expression statement is:
34 \begin{verbatim}
35 expression_stmt: expression_list
36 \end{verbatim}
38 An expression statement evaluates the expression list (which may be a
39 single expression).
40 \indexii{expression}{list}
42 In interactive mode, if the value is not \code{None}, it is converted
43 to a string using the built-in \function{repr()}\bifuncindex{repr}
44 function and the resulting string is written to standard output (see
45 section \ref{print}) on a line by itself. (Expression statements
46 yielding None are not written, so that procedure calls do not cause
47 any output.)
48 \ttindex{None}
49 \indexii{string}{conversion}
50 \index{output}
51 \indexii{standard}{output}
52 \indexii{writing}{values}
53 \indexii{procedure}{call}
55 \section{Assert statements \label{assert}}
57 Assert statements\stindex{assert} are a convenient way to insert
58 debugging assertions\indexii{debugging}{assertions} into a program:
60 \begin{verbatim}
61 assert_statement: "assert" expression ["," expression]
62 \end{verbatim}
64 The simple form, \samp{assert expression}, is equivalent to
66 \begin{verbatim}
67 if __debug__:
68 if not expression: raise AssertionError
69 \end{verbatim}
71 The extended form, \samp{assert expression1, expression2}, is
72 equivalent to
74 \begin{verbatim}
75 if __debug__:
76 if not expression1: raise AssertionError, expression2
77 \end{verbatim}
79 These equivalences assume that \code{__debug__}\ttindex{__debug__} and
80 \exception{AssertionError}\exindex{AssertionError} refer to the built-in
81 variables with those names. In the current implementation, the
82 built-in variable \code{__debug__} is 1 under normal circumstances, 0
83 when optimization is requested (command line option -O). The current
84 code generator emits no code for an assert statement when optimization
85 is requested at compile time. Note that it is unnecessary to include
86 the source code for the expression that failed in the error message;
87 it will be displayed as part of the stack trace.
90 \section{Assignment statements \label{assignment}}
92 Assignment statements\indexii{assignment}{statement} are used to
93 (re)bind names to values and to modify attributes or items of mutable
94 objects:
95 \indexii{binding}{name}
96 \indexii{rebinding}{name}
97 \obindex{mutable}
98 \indexii{attribute}{assignment}
100 \begin{verbatim}
101 assignment_stmt: (target_list "=")+ expression_list
102 target_list: target ("," target)* [","]
103 target: identifier | "(" target_list ")" | "[" target_list "]"
104 | attributeref | subscription | slicing
105 \end{verbatim}
107 (See section \ref{primaries} for the syntax definitions for the last
108 three symbols.)
110 An assignment statement evaluates the expression list (remember that
111 this can be a single expression or a comma-separated list, the latter
112 yielding a tuple) and assigns the single resulting object to each of
113 the target lists, from left to right.
114 \indexii{expression}{list}
116 Assignment is defined recursively depending on the form of the target
117 (list). When a target is part of a mutable object (an attribute
118 reference, subscription or slicing), the mutable object must
119 ultimately perform the assignment and decide about its validity, and
120 may raise an exception if the assignment is unacceptable. The rules
121 observed by various types and the exceptions raised are given with the
122 definition of the object types (see section \ref{types}).
123 \index{target}
124 \indexii{target}{list}
126 Assignment of an object to a target list is recursively defined as
127 follows.
128 \indexiii{target}{list}{assignment}
130 \begin{itemize}
131 \item
132 If the target list is a single target: The object is assigned to that
133 target.
135 \item
136 If the target list is a comma-separated list of targets: The object
137 must be a sequence with the same number of items as the there are
138 targets in the target list, and the items are assigned, from left to
139 right, to the corresponding targets. (This rule is relaxed as of
140 Python 1.5; in earlier versions, the object had to be a tuple. Since
141 strings are sequences, an assignment like \samp{a, b = "xy"} is
142 now legal as long as the string has the right length.)
144 \end{itemize}
146 Assignment of an object to a single target is recursively defined as
147 follows.
149 \begin{itemize} % nested
151 \item
152 If the target is an identifier (name):
154 \begin{itemize}
156 \item
157 If the name does not occur in a \keyword{global} statement in the current
158 code block: the name is bound to the object in the current local
159 namespace.
160 \stindex{global}
162 \item
163 Otherwise: the name is bound to the object in the current global
164 namespace.
166 \end{itemize} % nested
168 The name is rebound if it was already bound. This may cause the
169 reference count for the object previously bound to the name to reach
170 zero, causing the object to be deallocated and its
171 destructor\index{destructor} (if it has one) to be called.
173 \item
174 If the target is a target list enclosed in parentheses or in square
175 brackets: The object must be a sequence with the same number of items
176 as there are targets in the target list, and its items are assigned,
177 from left to right, to the corresponding targets.
179 \item
180 If the target is an attribute reference: The primary expression in the
181 reference is evaluated. It should yield an object with assignable
182 attributes; if this is not the case, \exception{TypeError} is raised. That
183 object is then asked to assign the assigned object to the given
184 attribute; if it cannot perform the assignment, it raises an exception
185 (usually but not necessarily \exception{AttributeError}).
186 \indexii{attribute}{assignment}
188 \item
189 If the target is a subscription: The primary expression in the
190 reference is evaluated. It should yield either a mutable sequence
191 object (e.g., a list) or a mapping object (e.g., a dictionary). Next,
192 the subscript expression is evaluated.
193 \indexii{subscription}{assignment}
194 \obindex{mutable}
196 If the primary is a mutable sequence object (e.g., a list), the subscript
197 must yield a plain integer. If it is negative, the sequence's length
198 is added to it. The resulting value must be a nonnegative integer
199 less than the sequence's length, and the sequence is asked to assign
200 the assigned object to its item with that index. If the index is out
201 of range, \exception{IndexError} is raised (assignment to a subscripted
202 sequence cannot add new items to a list).
203 \obindex{sequence}
204 \obindex{list}
206 If the primary is a mapping object (e.g., a dictionary), the subscript must
207 have a type compatible with the mapping's key type, and the mapping is
208 then asked to create a key/datum pair which maps the subscript to
209 the assigned object. This can either replace an existing key/value
210 pair with the same key value, or insert a new key/value pair (if no
211 key with the same value existed).
212 \obindex{mapping}
213 \obindex{dictionary}
215 \item
216 If the target is a slicing: The primary expression in the reference is
217 evaluated. It should yield a mutable sequence object (e.g., a list). The
218 assigned object should be a sequence object of the same type. Next,
219 the lower and upper bound expressions are evaluated, insofar they are
220 present; defaults are zero and the sequence's length. The bounds
221 should evaluate to (small) integers. If either bound is negative, the
222 sequence's length is added to it. The resulting bounds are clipped to
223 lie between zero and the sequence's length, inclusive. Finally, the
224 sequence object is asked to replace the slice with the items of the
225 assigned sequence. The length of the slice may be different from the
226 length of the assigned sequence, thus changing the length of the
227 target sequence, if the object allows it.
228 \indexii{slicing}{assignment}
230 \end{itemize}
232 (In the current implementation, the syntax for targets is taken
233 to be the same as for expressions, and invalid syntax is rejected
234 during the code generation phase, causing less detailed error
235 messages.)
237 WARNING: Although the definition of assignment implies that overlaps
238 between the left-hand side and the right-hand side are `safe' (e.g.,
239 \samp{a, b = b, a} swaps two variables), overlaps \emph{within} the
240 collection of assigned-to variables are not safe! For instance, the
241 following program prints \samp{[0, 2]}:
243 \begin{verbatim}
244 x = [0, 1]
245 i = 0
246 i, x[i] = 1, 2
247 print x
248 \end{verbatim}
251 \subsection{Augmented Assignment statements \label{augassign}}
253 Augmented assignment is the combination, in a single statement, of a binary
254 operation and an assignment statement:
255 \indexii{augmented}{assignment}
256 \index{statement!assignment, augmented}
258 \begin{verbatim}
259 augmented_assignment_stmt: target augop expression_list
260 augop: "+=" | "-=" | "*=" | "/=" | "%=" | "**="
261 | ">>=" | "<<=" | "&=" | "^=" | "|="
262 target: identifier | "(" target_list ")" | "[" target_list "]"
263 | attributeref | subscription | slicing
264 \end{verbatim}
266 (See section \ref{primaries} for the syntax definitions for the last
267 three symbols.)
269 An augmented assignment evaluates the target (which, unlike normal
270 assignment statements, cannot be an unpacking) and the expression
271 list, performs the binary operation specific to the type of assignment
272 on the two operands, and assigns the result to the original
273 target. The target is only evaluated once.
275 An augmented assignment expression like \code{x += 1} can be rewritten as
276 \code{x = x + 1} to achieve a similar, but not exactly equal effect. In the
277 augmented version, \code{x} is only evaluated once. Also, when possible, the
278 actual operation is performed \emph{in-place}, meaning that rather than
279 creating a new object and assigning that to the target, the old object is
280 modified instead.
282 With the exception of assigning to tuples and multiple targets in a single
283 statement, the assignment done by augmented assignment statements is handled
284 the same way as normal assignments. Similarly, with the exception of the
285 possible \emph{in-place} behaviour, the binary operation performed by
286 augmented assignment is the same as the normal binary operations.
289 \section{The \keyword{pass} statement \label{pass}}
290 \stindex{pass}
292 \begin{verbatim}
293 pass_stmt: "pass"
294 \end{verbatim}
296 \keyword{pass} is a null operation --- when it is executed, nothing
297 happens. It is useful as a placeholder when a statement is
298 required syntactically, but no code needs to be executed, for example:
299 \indexii{null}{operation}
301 \begin{verbatim}
302 def f(arg): pass # a function that does nothing (yet)
304 class C: pass # a class with no methods (yet)
305 \end{verbatim}
307 \section{The \keyword{del} statement \label{del}}
308 \stindex{del}
310 \begin{verbatim}
311 del_stmt: "del" target_list
312 \end{verbatim}
314 Deletion is recursively defined very similar to the way assignment is
315 defined. Rather that spelling it out in full details, here are some
316 hints.
317 \indexii{deletion}{target}
318 \indexiii{deletion}{target}{list}
320 Deletion of a target list recursively deletes each target, from left
321 to right.
323 Deletion of a name removes the binding of that name (which must exist)
324 from the local or global namespace, depending on whether the name
325 occurs in a \keyword{global} statement in the same code block.
326 \stindex{global}
327 \indexii{unbinding}{name}
329 Deletion of attribute references, subscriptions and slicings
330 is passed to the primary object involved; deletion of a slicing
331 is in general equivalent to assignment of an empty slice of the
332 right type (but even this is determined by the sliced object).
333 \indexii{attribute}{deletion}
335 \section{The \keyword{print} statement \label{print}}
336 \stindex{print}
338 \begin{verbatim}
339 print_stmt: "print" [ expression ("," expression)* [","] ]
340 \end{verbatim}
342 \keyword{print} evaluates each expression in turn and writes the
343 resulting object to standard output (see below). If an object is not
344 a string, it is first converted to a string using the rules for string
345 conversions. The (resulting or original) string is then written. A
346 space is written before each object is (converted and) written, unless
347 the output system believes it is positioned at the beginning of a
348 line. This is the case (1) when no characters have yet been written
349 to standard output, (2) when the last character written to standard
350 output is \character{\e n}, or (3) when the last write operation on
351 standard output was not a \keyword{print} statement. (In some cases
352 it may be functional to write an empty string to standard output for
353 this reason.)
354 \index{output}
355 \indexii{writing}{values}
357 A \character{\e n} character is written at the end, unless the
358 \keyword{print} statement ends with a comma. This is the only action
359 if the statement contains just the keyword \keyword{print}.
360 \indexii{trailing}{comma}
361 \indexii{newline}{suppression}
363 Standard output is defined as the file object named \code{stdout}
364 in the built-in module \module{sys}. If no such object exists, or if
365 it does not have a \method{write()} method, a \exception{RuntimeError}
366 exception is raised.
367 \indexii{standard}{output}
368 \refbimodindex{sys}
369 \withsubitem{(in module sys)}{\ttindex{stdout}}
370 \exindex{RuntimeError}
372 \keyword{print} also has an extended form, defined as
373 \index{extended print statement}
375 \begin{verbatim}
376 print_stmt: "print" ">>" expression [ ("," expression)+ [","] ]
377 \end{verbatim}
379 In this form, the first expression after the \keyword{>>} must
380 evaluate to a ``file-like'' object, specifically an object that has a
381 \method{write()} method as described above. With this extended form,
382 the subsequent expressions are printed to this file object. If the
383 first expression evaluates to \code{None}, then \code{sys.stdout} is
384 used as the file for output.
386 \section{The \keyword{return} statement \label{return}}
387 \stindex{return}
389 \begin{verbatim}
390 return_stmt: "return" [expression_list]
391 \end{verbatim}
393 \keyword{return} may only occur syntactically nested in a function
394 definition, not within a nested class definition.
395 \indexii{function}{definition}
396 \indexii{class}{definition}
398 If an expression list is present, it is evaluated, else \code{None}
399 is substituted.
401 \keyword{return} leaves the current function call with the expression
402 list (or \code{None}) as return value.
404 When \keyword{return} passes control out of a \keyword{try} statement
405 with a \keyword{finally} clause, that \keyword{finally} clause is executed
406 before really leaving the function.
407 \kwindex{finally}
409 \section{The \keyword{raise} statement \label{raise}}
410 \stindex{raise}
412 \begin{verbatim}
413 raise_stmt: "raise" [expression ["," expression ["," expression]]]
414 \end{verbatim}
416 If no expressions are present, \keyword{raise} re-raises the last
417 expression that was raised in the current scope.
419 Otherwise, \keyword{raise} evaluates its first expression, which must yield
420 a string, class, or instance object. If there is a second expression,
421 this is evaluated, else \code{None} is substituted. If the first
422 expression is a class object, then the second expression may be an
423 instance of that class or one of its derivatives, and then that
424 instance is raised. If the second expression is not such an instance,
425 the given class is instantiated. The argument list for the
426 instantiation is determined as follows: if the second expression is a
427 tuple, it is used as the argument list; if it is \code{None}, the
428 argument list is empty; otherwise, the argument list consists of a
429 single argument which is the second expression. If the first
430 expression is an instance object, the second expression must be
431 \code{None}.
432 \index{exception}
433 \indexii{raising}{exception}
435 If the first object is a string, it then raises the exception
436 identified by the first object, with the second one (or \code{None})
437 as its parameter. If the first object is a class or instance,
438 it raises the exception identified by the class of the instance
439 determined in the previous step, with the instance as
440 its parameter.
442 If a third object is present, and it is not \code{None}, it should be
443 a traceback object (see section \ref{traceback}), and it is
444 substituted instead of the current location as the place where the
445 exception occurred. This is useful to re-raise an exception
446 transparently in an except clause.
447 \obindex{traceback}
449 \section{The \keyword{break} statement \label{break}}
450 \stindex{break}
452 \begin{verbatim}
453 break_stmt: "break"
454 \end{verbatim}
456 \keyword{break} may only occur syntactically nested in a \keyword{for}
457 or \keyword{while} loop, but not nested in a function or class definition
458 within that loop.
459 \stindex{for}
460 \stindex{while}
461 \indexii{loop}{statement}
463 It terminates the nearest enclosing loop, skipping the optional
464 \keyword{else} clause if the loop has one.
465 \kwindex{else}
467 If a \keyword{for} loop is terminated by \keyword{break}, the loop control
468 target keeps its current value.
469 \indexii{loop control}{target}
471 When \keyword{break} passes control out of a \keyword{try} statement
472 with a \keyword{finally} clause, that \keyword{finally} clause is executed
473 before really leaving the loop.
474 \kwindex{finally}
476 \section{The \keyword{continue} statement \label{continue}}
477 \stindex{continue}
479 \begin{verbatim}
480 continue_stmt: "continue"
481 \end{verbatim}
483 \keyword{continue} may only occur syntactically nested in a \keyword{for} or
484 \keyword{while} loop, but not nested in a function or class definition or
485 \keyword{try} statement within that loop.\footnote{It may
486 occur within an \keyword{except} or \keyword{else} clause. The
487 restriction on occurring in the \keyword{try} clause is implementor's
488 laziness and will eventually be lifted.}
489 It continues with the next cycle of the nearest enclosing loop.
490 \stindex{for}
491 \stindex{while}
492 \indexii{loop}{statement}
493 \kwindex{finally}
495 \section{The \keyword{import} statement \label{import}}
496 \stindex{import}
498 \begin{verbatim}
499 import_stmt: "import" module ["as" name] ("," module ["as" name] )*
500 | "from" module "import" identifier ["as" name]
501 ("," identifier ["as" name] )*
502 | "from" module "import" "*"
503 module: (identifier ".")* identifier
504 \end{verbatim}
506 Import statements are executed in two steps: (1) find a module, and
507 initialize it if necessary; (2) define a name or names in the local
508 namespace (of the scope where the \keyword{import} statement occurs).
509 The first form (without \keyword{from}) repeats these steps for each
510 identifier in the list. The form with \keyword{from} performs step
511 (1) once, and then performs step (2) repeatedly.
512 \indexii{importing}{module}
513 \indexii{name}{binding}
514 \kwindex{from}
515 % XXX Need to define what ``initialize'' means here
517 The system maintains a table of modules that have been initialized,
518 indexed by module name. This table is
519 accessible as \code{sys.modules}. When a module name is found in
520 this table, step (1) is finished. If not, a search for a module
521 definition is started. When a module is found, it is loaded. Details
522 of the module searching and loading process are implementation and
523 platform specific. It generally involves searching for a ``built-in''
524 module with the given name and then searching a list of locations
525 given as \code{sys.path}.
526 \withsubitem{(in module sys)}{\ttindex{modules}}
527 \ttindex{sys.modules}
528 \indexii{module}{name}
529 \indexii{built-in}{module}
530 \indexii{user-defined}{module}
531 \refbimodindex{sys}
532 \indexii{filename}{extension}
533 \indexiii{module}{search}{path}
535 If a built-in module is found, its built-in initialization code is
536 executed and step (1) is finished. If no matching file is found,
537 \exception{ImportError} is raised. If a file is found, it is parsed,
538 yielding an executable code block. If a syntax error occurs,
539 \exception{SyntaxError} is raised. Otherwise, an empty module of the given
540 name is created and inserted in the module table, and then the code
541 block is executed in the context of this module. Exceptions during
542 this execution terminate step (1).
543 \indexii{module}{initialization}
544 \exindex{SyntaxError}
545 \exindex{ImportError}
546 \index{code block}
548 When step (1) finishes without raising an exception, step (2) can
549 begin.
551 The first form of \keyword{import} statement binds the module name in the
552 local namespace to the module object, and then goes on to import the
553 next identifier, if any. If the module name is followed by \keyword{as},
554 the name following \keyword{as} is used as the local name for the module. To
555 avoid confusion, you cannot import sub-modules 'as' a different
556 local name. So 'import module as m' is legal, but 'import module.submod as
557 s' is not. The latter should be written as 'from module import submod as s',
558 see below.
560 The \keyword{from} form does not bind the module name: it goes through the
561 list of identifiers, looks each one of them up in the module found in step
562 (1), and binds the name in the local namespace to the object thus found.
563 As with the first form of \keyword{import}, an alternate local name can be
564 supplied by specifying "\keyword{as} localname". If a name is not found,
565 \exception{ImportError} is raised. If the list of identifiers is replaced
566 by a star (\samp{*}), all names defined in the module are bound, except
567 those beginning with an underscore (\character{_}).
568 \indexii{name}{binding}
569 \exindex{ImportError}
571 Names bound by \keyword{import} statements may not occur in
572 \keyword{global} statements in the same scope.
573 \stindex{global}
575 The \keyword{from} form with \samp{*} may only occur in a module scope.
576 \kwindex{from}
577 \stindex{from}
579 (The current implementation does not enforce the latter two
580 restrictions, but programs should not abuse this freedom, as future
581 implementations may enforce them or silently change the meaning of the
582 program.)
584 \strong{Hierarchical module names:}\indexiii{hierarchical}{module}{names}
585 when the module names contains one or more dots, the module search
586 path is carried out differently. The sequence of identifiers up to
587 the last dot is used to find a ``package''\index{packages}; the final
588 identifier is then searched inside the package. A package is
589 generally a subdirectory of a directory on \code{sys.path} that has a
590 file \file{__init__.py}.\ttindex{__init__.py}
592 [XXX Can't be bothered to spell this out right now; see the URL
593 \url{http://www.python.org/doc/essays/packages.html} for more details, also
594 about how the module search works from inside a package.]
596 [XXX Also should mention __import__().]
597 \bifuncindex{__import__}
599 \section{The \keyword{global} statement \label{global}}
600 \stindex{global}
602 \begin{verbatim}
603 global_stmt: "global" identifier ("," identifier)*
604 \end{verbatim}
606 The \keyword{global} statement is a declaration which holds for the
607 entire current code block. It means that the listed identifiers are to be
608 interpreted as globals. While \emph{using} global names is automatic
609 if they are not defined in the local scope, \emph{assigning} to global
610 names would be impossible without \keyword{global}.
611 \indexiii{global}{name}{binding}
613 Names listed in a \keyword{global} statement must not be used in the same
614 code block textually preceding that \keyword{global} statement.
616 Names listed in a \keyword{global} statement must not be defined as formal
617 parameters or in a \keyword{for} loop control target, \keyword{class}
618 definition, function definition, or \keyword{import} statement.
620 (The current implementation does not enforce the latter two
621 restrictions, but programs should not abuse this freedom, as future
622 implementations may enforce them or silently change the meaning of the
623 program.)
625 \strong{Programmer's note:}
626 the \keyword{global} is a directive to the parser. It
627 applies only to code parsed at the same time as the \keyword{global}
628 statement. In particular, a \keyword{global} statement contained in an
629 \keyword{exec} statement does not affect the code block \emph{containing}
630 the \keyword{exec} statement, and code contained in an \keyword{exec}
631 statement is unaffected by \keyword{global} statements in the code
632 containing the \keyword{exec} statement. The same applies to the
633 \function{eval()}, \function{execfile()} and \function{compile()} functions.
634 \stindex{exec}
635 \bifuncindex{eval}
636 \bifuncindex{execfile}
637 \bifuncindex{compile}
639 \section{The \keyword{exec} statement \label{exec}}
640 \stindex{exec}
642 \begin{verbatim}
643 exec_stmt: "exec" expression ["in" expression ["," expression]]
644 \end{verbatim}
646 This statement supports dynamic execution of Python code. The first
647 expression should evaluate to either a string, an open file object, or
648 a code object. If it is a string, the string is parsed as a suite of
649 Python statements which is then executed (unless a syntax error
650 occurs). If it is an open file, the file is parsed until EOF and
651 executed. If it is a code object, it is simply executed.
653 In all cases, if the optional parts are omitted, the code is executed
654 in the current scope. If only the first expression after \keyword{in}
655 is specified, it should be a dictionary, which will be used for both
656 the global and the local variables. If two expressions are given,
657 both must be dictionaries and they are used for the global and local
658 variables, respectively.
660 As a side effect, an implementation may insert additional keys into
661 the dictionaries given besides those corresponding to variable names
662 set by the executed code. For example, the current implementation
663 may add a reference to the dictionary of the built-in module
664 \module{__builtin__} under the key \code{__builtins__} (!).
665 \ttindex{__builtins__}
666 \refbimodindex{__builtin__}
668 \strong{Programmer's hints:}
669 dynamic evaluation of expressions is supported by the built-in
670 function \function{eval()}. The built-in functions
671 \function{globals()} and \function{locals()} return the current global
672 and local dictionary, respectively, which may be useful to pass around
673 for use by \keyword{exec}.
674 \bifuncindex{eval}
675 \bifuncindex{globals}
676 \bifuncindex{locals}
678 Also, in the current implementation, multi-line compound statements must
679 end with a newline:
680 \code{exec "for v in seq:\e{}n\e{}tprint v\e{}n"} works, but
681 \code{exec "for v in seq:\e{}n\e{}tprint v"} fails with
682 \exception{SyntaxError}.
683 \exindex{SyntaxError}