Bug #1637365: add subsection about "__name__ == __main__" to the
Python tutorial.
This commit is contained in:
parent
b2e208f901
commit
9467bc5ad1
|
@ -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}}
|
||||
|
||||
|
|
Loading…
Reference in New Issue