Bug #1637365: add subsection about "__name__ == __main__" to the

Python tutorial.
 (backport from rev. 56306)
This commit is contained in:
Georg Brandl 2007-07-12 09:37:53 +00:00
parent f36e6a1a83
commit 78d59d65c7
2 changed files with 41 additions and 0 deletions

View File

@ -2522,6 +2522,44 @@ There is even a variant to import all names that a module defines:
This imports all names except those beginning with an underscore
(\code{_}).
\subsection{Executing modules as scripts \label{modulesAsScripts}}
When you run a Python module with
\begin{verbatim}
python fibo.py <arguments>
\end{verbatim}
the code in the module will be executed, just as if you imported it, but
with the \code{__name__} set to \code{"__main__"}. That means that by
adding this code at the end of your module:
\begin{verbatim}
if __name__ == "__main__":
import sys
fib(int(sys.argv[1]))
\end{verbatim}
you can make the file usable as a script as well as an importable module,
because the code that parses the command line only runs if the module is
executed as the ``main'' file:
\begin{verbatim}
$ python fibo.py 50
1 1 2 3 5 8 13 21 34
\end{verbatim}
If the module is imported, the code is not run:
\begin{verbatim}
>>> import fibo
>>>
\end{verbatim}
This is often used either to provide a convenient user interface to a
module, or for testing purposes (running the module as a script executes
a test suite).
\subsection{The Module Search Path \label{searchPath}}

View File

@ -77,6 +77,9 @@ Extension Modules
Documentation
-------------
- Bug #1637365: add subsection about "__name__ == __main__" to the
Python tutorial.
- Bug #1569057: Document that calling file.next() on a file open for writing
has undefined behaviour. Backport of r54712.