]> granicus.if.org Git - python/commitdiff
Bug #1637365: add subsection about "__name__ == __main__" to the
authorGeorg Brandl <georg@python.org>
Thu, 12 Jul 2007 09:37:53 +0000 (09:37 +0000)
committerGeorg Brandl <georg@python.org>
Thu, 12 Jul 2007 09:37:53 +0000 (09:37 +0000)
Python tutorial.
 (backport from rev. 56306)

Doc/tut/tut.tex
Misc/NEWS

index 794a5a008659a162175dc0a2a980345fc1b89ed0..f41770443d4ac28c034f5b21ae2722e727f38ec7 100644 (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}}
 
index 78205ef22a907405496fe12e5eba2934cb62ce16..c75b2f27083d81d415af8a7296943a97870875af 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -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.