| 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} |