1 2.. _top-level: 3 4******************** 5Top-level components 6******************** 7 8.. index:: single: interpreter 9 10The Python interpreter can get its input from a number of sources: from a script 11passed to it as standard input or as program argument, typed in interactively, 12from a module source file, etc. This chapter gives the syntax used in these 13cases. 14 15 16.. _programs: 17 18Complete Python programs 19======================== 20 21.. index:: single: program 22 23.. index:: 24 module: sys 25 module: __main__ 26 module: builtins 27 28While a language specification need not prescribe how the language interpreter 29is invoked, it is useful to have a notion of a complete Python program. A 30complete Python program is executed in a minimally initialized environment: all 31built-in and standard modules are available, but none have been initialized, 32except for :mod:`sys` (various system services), :mod:`builtins` (built-in 33functions, exceptions and ``None``) and :mod:`__main__`. The latter is used to 34provide the local and global namespace for execution of the complete program. 35 36The syntax for a complete Python program is that for file input, described in 37the next section. 38 39.. index:: 40 single: interactive mode 41 module: __main__ 42 43The interpreter may also be invoked in interactive mode; in this case, it does 44not read and execute a complete program but reads and executes one statement 45(possibly compound) at a time. The initial environment is identical to that of 46a complete program; each statement is executed in the namespace of 47:mod:`__main__`. 48 49.. index:: 50 single: UNIX 51 single: command line 52 single: standard input 53 54Under Unix, a complete program can be passed to the interpreter in three forms: 55with the :option:`-c` *string* command line option, as a file passed as the 56first command line argument, or as standard input. If the file or standard 57input is a tty device, the interpreter enters interactive mode; otherwise, it 58executes the file as a complete program. 59 60 61.. _file-input: 62 63File input 64========== 65 66All input read from non-interactive files has the same form: 67 68.. productionlist:: 69 file_input: (NEWLINE | `statement`)* 70 71This syntax is used in the following situations: 72 73* when parsing a complete Python program (from a file or from a string); 74 75* when parsing a module; 76 77* when parsing a string passed to the :func:`exec` function; 78 79 80.. _interactive: 81 82Interactive input 83================= 84 85Input in interactive mode is parsed using the following grammar: 86 87.. productionlist:: 88 interactive_input: [`stmt_list`] NEWLINE | `compound_stmt` NEWLINE 89 90Note that a (top-level) compound statement must be followed by a blank line in 91interactive mode; this is needed to help the parser detect the end of the input. 92 93 94.. _expression-input: 95 96Expression input 97================ 98 99.. index:: single: input 100.. index:: builtin: eval 101 102:func:`eval` is used for expression input. It ignores leading whitespace. The 103string argument to :func:`eval` must have the following form: 104 105.. productionlist:: 106 eval_input: `expression_list` NEWLINE* 107