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

Python tutorial.
This commit is contained in:
Georg Brandl 2007-07-12 09:37:49 +00:00
parent b2e208f901
commit 9467bc5ad1
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 This imports all names except those beginning with an underscore
(\code{_}). (\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}} \subsection{The Module Search Path \label{searchPath}}

View File

@ -851,6 +851,9 @@ Tools
Documentation Documentation
------------- -------------
- Bug #1637365: add subsection about "__name__ == __main__" to the
Python tutorial.
- Patch #1698768: updated the "using Python on the Mac" intro. - Patch #1698768: updated the "using Python on the Mac" intro.
- Bug #1569057: Document that calling file.next() when the file is open for - Bug #1569057: Document that calling file.next() when the file is open for