summaryrefslogtreecommitdiffstats
path: root/Doc
diff options
context:
space:
mode:
authorGeorg Brandl <georg@python.org>2007-07-12 09:37:49 (GMT)
committerGeorg Brandl <georg@python.org>2007-07-12 09:37:49 (GMT)
commit9467bc5ad1e886ecd0be84eddef35153ead936b1 (patch)
tree959657faf6066aea3cce87d7306d97734ac63c03 /Doc
parentb2e208f9010e4b1abbbd560d3d4a8f66fa5861d6 (diff)
downloadcpython-9467bc5ad1e886ecd0be84eddef35153ead936b1.zip
cpython-9467bc5ad1e886ecd0be84eddef35153ead936b1.tar.gz
cpython-9467bc5ad1e886ecd0be84eddef35153ead936b1.tar.bz2
Bug #1637365: add subsection about "__name__ == __main__" to the
Python tutorial.
Diffstat (limited to 'Doc')
-rw-r--r--Doc/tut/tut.tex38
1 files changed, 38 insertions, 0 deletions
diff --git a/Doc/tut/tut.tex b/Doc/tut/tut.tex
index c3c6bf6..ee3d21c 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 <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}}