17db96d56Sopenharmony_ci 27db96d56Sopenharmony_ci.. _top-level: 37db96d56Sopenharmony_ci 47db96d56Sopenharmony_ci******************** 57db96d56Sopenharmony_ciTop-level components 67db96d56Sopenharmony_ci******************** 77db96d56Sopenharmony_ci 87db96d56Sopenharmony_ci.. index:: single: interpreter 97db96d56Sopenharmony_ci 107db96d56Sopenharmony_ciThe Python interpreter can get its input from a number of sources: from a script 117db96d56Sopenharmony_cipassed to it as standard input or as program argument, typed in interactively, 127db96d56Sopenharmony_cifrom a module source file, etc. This chapter gives the syntax used in these 137db96d56Sopenharmony_cicases. 147db96d56Sopenharmony_ci 157db96d56Sopenharmony_ci 167db96d56Sopenharmony_ci.. _programs: 177db96d56Sopenharmony_ci 187db96d56Sopenharmony_ciComplete Python programs 197db96d56Sopenharmony_ci======================== 207db96d56Sopenharmony_ci 217db96d56Sopenharmony_ci.. index:: single: program 227db96d56Sopenharmony_ci 237db96d56Sopenharmony_ci.. index:: 247db96d56Sopenharmony_ci pair: module; sys 257db96d56Sopenharmony_ci pair: module; __main__ 267db96d56Sopenharmony_ci pair: module; builtins 277db96d56Sopenharmony_ci 287db96d56Sopenharmony_ciWhile a language specification need not prescribe how the language interpreter 297db96d56Sopenharmony_ciis invoked, it is useful to have a notion of a complete Python program. A 307db96d56Sopenharmony_cicomplete Python program is executed in a minimally initialized environment: all 317db96d56Sopenharmony_cibuilt-in and standard modules are available, but none have been initialized, 327db96d56Sopenharmony_ciexcept for :mod:`sys` (various system services), :mod:`builtins` (built-in 337db96d56Sopenharmony_cifunctions, exceptions and ``None``) and :mod:`__main__`. The latter is used to 347db96d56Sopenharmony_ciprovide the local and global namespace for execution of the complete program. 357db96d56Sopenharmony_ci 367db96d56Sopenharmony_ciThe syntax for a complete Python program is that for file input, described in 377db96d56Sopenharmony_cithe next section. 387db96d56Sopenharmony_ci 397db96d56Sopenharmony_ci.. index:: 407db96d56Sopenharmony_ci single: interactive mode 417db96d56Sopenharmony_ci pair: module; __main__ 427db96d56Sopenharmony_ci 437db96d56Sopenharmony_ciThe interpreter may also be invoked in interactive mode; in this case, it does 447db96d56Sopenharmony_cinot read and execute a complete program but reads and executes one statement 457db96d56Sopenharmony_ci(possibly compound) at a time. The initial environment is identical to that of 467db96d56Sopenharmony_cia complete program; each statement is executed in the namespace of 477db96d56Sopenharmony_ci:mod:`__main__`. 487db96d56Sopenharmony_ci 497db96d56Sopenharmony_ci.. index:: 507db96d56Sopenharmony_ci single: UNIX 517db96d56Sopenharmony_ci single: Windows 527db96d56Sopenharmony_ci single: command line 537db96d56Sopenharmony_ci single: standard input 547db96d56Sopenharmony_ci 557db96d56Sopenharmony_ciA complete program can be passed to the interpreter 567db96d56Sopenharmony_ciin three forms: with the :option:`-c` *string* command line option, as a file 577db96d56Sopenharmony_cipassed as the first command line argument, or as standard input. If the file 587db96d56Sopenharmony_cior standard input is a tty device, the interpreter enters interactive mode; 597db96d56Sopenharmony_ciotherwise, it executes the file as a complete program. 607db96d56Sopenharmony_ci 617db96d56Sopenharmony_ci 627db96d56Sopenharmony_ci.. _file-input: 637db96d56Sopenharmony_ci 647db96d56Sopenharmony_ciFile input 657db96d56Sopenharmony_ci========== 667db96d56Sopenharmony_ci 677db96d56Sopenharmony_ciAll input read from non-interactive files has the same form: 687db96d56Sopenharmony_ci 697db96d56Sopenharmony_ci.. productionlist:: python-grammar 707db96d56Sopenharmony_ci file_input: (NEWLINE | `statement`)* 717db96d56Sopenharmony_ci 727db96d56Sopenharmony_ciThis syntax is used in the following situations: 737db96d56Sopenharmony_ci 747db96d56Sopenharmony_ci* when parsing a complete Python program (from a file or from a string); 757db96d56Sopenharmony_ci 767db96d56Sopenharmony_ci* when parsing a module; 777db96d56Sopenharmony_ci 787db96d56Sopenharmony_ci* when parsing a string passed to the :func:`exec` function; 797db96d56Sopenharmony_ci 807db96d56Sopenharmony_ci 817db96d56Sopenharmony_ci.. _interactive: 827db96d56Sopenharmony_ci 837db96d56Sopenharmony_ciInteractive input 847db96d56Sopenharmony_ci================= 857db96d56Sopenharmony_ci 867db96d56Sopenharmony_ciInput in interactive mode is parsed using the following grammar: 877db96d56Sopenharmony_ci 887db96d56Sopenharmony_ci.. productionlist:: python-grammar 897db96d56Sopenharmony_ci interactive_input: [`stmt_list`] NEWLINE | `compound_stmt` NEWLINE 907db96d56Sopenharmony_ci 917db96d56Sopenharmony_ciNote that a (top-level) compound statement must be followed by a blank line in 927db96d56Sopenharmony_ciinteractive mode; this is needed to help the parser detect the end of the input. 937db96d56Sopenharmony_ci 947db96d56Sopenharmony_ci 957db96d56Sopenharmony_ci.. _expression-input: 967db96d56Sopenharmony_ci 977db96d56Sopenharmony_ciExpression input 987db96d56Sopenharmony_ci================ 997db96d56Sopenharmony_ci 1007db96d56Sopenharmony_ci.. index:: single: input 1017db96d56Sopenharmony_ci.. index:: pair: built-in function; eval 1027db96d56Sopenharmony_ci 1037db96d56Sopenharmony_ci:func:`eval` is used for expression input. It ignores leading whitespace. The 1047db96d56Sopenharmony_cistring argument to :func:`eval` must have the following form: 1057db96d56Sopenharmony_ci 1067db96d56Sopenharmony_ci.. productionlist:: python-grammar 1077db96d56Sopenharmony_ci eval_input: `expression_list` NEWLINE* 108