diff --git a/Doc/tut/tut.tex b/Doc/tut/tut.tex index c3c6bf6c604..ee3d21c1be9 100644 --- a/Doc/tut/tut.tex +++ b/Doc/tut/tut.tex @@ -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 +\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}} diff --git a/Misc/NEWS b/Misc/NEWS index 9bf357b6a5e..c40cf78ceaf 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -851,6 +851,9 @@ Tools Documentation ------------- +- Bug #1637365: add subsection about "__name__ == __main__" to the + Python tutorial. + - Patch #1698768: updated the "using Python on the Mac" intro. - Bug #1569057: Document that calling file.next() when the file is open for