Guido van Rossum | da43a4a | 1992-08-14 09:17:29 +0000 | [diff] [blame] | 1 | \chapter{Top-level components} |
| 2 | |
| 3 | The Python interpreter can get its input from a number of sources: |
| 4 | from a script passed to it as standard input or as program argument, |
| 5 | typed in interactively, from a module source file, etc. This chapter |
| 6 | gives the syntax used in these cases. |
| 7 | \index{interpreter} |
| 8 | |
| 9 | \section{Complete Python programs} |
| 10 | \index{program} |
| 11 | |
| 12 | While a language specification need not prescribe how the language |
| 13 | interpreter is invoked, it is useful to have a notion of a complete |
| 14 | Python program. A complete Python program is executed in a minimally |
| 15 | initialized environment: all built-in and standard modules are |
Guido van Rossum | e991496 | 1994-08-01 12:38:14 +0000 | [diff] [blame] | 16 | available, but none have been initialized, except for \verb@sys@ |
| 17 | (various system services), \verb@__builtin__@ (built-in functions, |
| 18 | exceptions and \verb@None@) and \verb@__main__@. The latter is used |
Guido van Rossum | da43a4a | 1992-08-14 09:17:29 +0000 | [diff] [blame] | 19 | to provide the local and global name space for execution of the |
| 20 | complete program. |
| 21 | \bimodindex{sys} |
| 22 | \bimodindex{__main__} |
Guido van Rossum | 4bd023f | 1993-10-27 13:49:20 +0000 | [diff] [blame] | 23 | \bimodindex{__builtin__} |
Guido van Rossum | da43a4a | 1992-08-14 09:17:29 +0000 | [diff] [blame] | 24 | |
| 25 | The syntax for a complete Python program is that for file input, |
| 26 | described in the next section. |
| 27 | |
| 28 | The interpreter may also be invoked in interactive mode; in this case, |
| 29 | it does not read and execute a complete program but reads and executes |
| 30 | one statement (possibly compound) at a time. The initial environment |
| 31 | is identical to that of a complete program; each statement is executed |
Guido van Rossum | e991496 | 1994-08-01 12:38:14 +0000 | [diff] [blame] | 32 | in the name space of \verb@__main__@. |
Guido van Rossum | da43a4a | 1992-08-14 09:17:29 +0000 | [diff] [blame] | 33 | \index{interactive mode} |
Guido van Rossum | aaec403 | 1995-03-21 14:41:57 +0000 | [diff] [blame] | 34 | \bimodindex{__main__} |
Guido van Rossum | da43a4a | 1992-08-14 09:17:29 +0000 | [diff] [blame] | 35 | |
| 36 | Under {\UNIX}, a complete program can be passed to the interpreter in |
| 37 | three forms: with the {\bf -c} {\it string} command line option, as a |
| 38 | file passed as the first command line argument, or as standard input. |
| 39 | If the file or standard input is a tty device, the interpreter enters |
| 40 | interactive mode; otherwise, it executes the file as a complete |
| 41 | program. |
| 42 | \index{UNIX} |
| 43 | \index{command line} |
| 44 | \index{standard input} |
| 45 | |
| 46 | \section{File input} |
| 47 | |
| 48 | All input read from non-interactive files has the same form: |
| 49 | |
| 50 | \begin{verbatim} |
| 51 | file_input: (NEWLINE | statement)* |
| 52 | \end{verbatim} |
| 53 | |
| 54 | This syntax is used in the following situations: |
| 55 | |
| 56 | \begin{itemize} |
| 57 | |
| 58 | \item when parsing a complete Python program (from a file or from a string); |
| 59 | |
| 60 | \item when parsing a module; |
| 61 | |
Guido van Rossum | e991496 | 1994-08-01 12:38:14 +0000 | [diff] [blame] | 62 | \item when parsing a string passed to the \verb@exec@ statement; |
Guido van Rossum | da43a4a | 1992-08-14 09:17:29 +0000 | [diff] [blame] | 63 | |
| 64 | \end{itemize} |
| 65 | |
| 66 | \section{Interactive input} |
| 67 | |
| 68 | Input in interactive mode is parsed using the following grammar: |
| 69 | |
| 70 | \begin{verbatim} |
| 71 | interactive_input: [stmt_list] NEWLINE | compound_stmt NEWLINE |
| 72 | \end{verbatim} |
| 73 | |
| 74 | Note that a (top-level) compound statement must be followed by a blank |
| 75 | line in interactive mode; this is needed to help the parser detect the |
| 76 | end of the input. |
| 77 | |
| 78 | \section{Expression input} |
| 79 | \index{input} |
| 80 | |
| 81 | There are two forms of expression input. Both ignore leading |
| 82 | whitespace. |
| 83 | |
Guido van Rossum | e991496 | 1994-08-01 12:38:14 +0000 | [diff] [blame] | 84 | The string argument to \verb@eval()@ must have the following form: |
Guido van Rossum | da43a4a | 1992-08-14 09:17:29 +0000 | [diff] [blame] | 85 | \bifuncindex{eval} |
| 86 | |
| 87 | \begin{verbatim} |
| 88 | eval_input: condition_list NEWLINE* |
| 89 | \end{verbatim} |
| 90 | |
Guido van Rossum | e991496 | 1994-08-01 12:38:14 +0000 | [diff] [blame] | 91 | The input line read by \verb@input()@ must have the following form: |
Guido van Rossum | da43a4a | 1992-08-14 09:17:29 +0000 | [diff] [blame] | 92 | \bifuncindex{input} |
| 93 | |
| 94 | \begin{verbatim} |
| 95 | input_input: condition_list NEWLINE |
| 96 | \end{verbatim} |
| 97 | |
| 98 | Note: to read `raw' input line without interpretation, you can use the |
Guido van Rossum | e991496 | 1994-08-01 12:38:14 +0000 | [diff] [blame] | 99 | built-in function \verb@raw_input()@ or the \verb@readline()@ method |
Guido van Rossum | da43a4a | 1992-08-14 09:17:29 +0000 | [diff] [blame] | 100 | of file objects. |
| 101 | \obindex{file} |
| 102 | \index{input!raw} |
| 103 | \index{raw input} |
| 104 | \bifuncindex{raw_index} |
| 105 | \ttindex{readline} |