mirror of
https://github.com/python/cpython.git
synced 2025-11-01 18:51:43 +00:00
Expand on the semantics of reload(). Closes #919099.
This commit is contained in:
parent
0690512a7d
commit
8e6ad6fbe9
1 changed files with 24 additions and 2 deletions
|
|
@ -785,14 +785,36 @@ class C(object):
|
|||
\end{funcdesc}
|
||||
|
||||
\begin{funcdesc}{reload}{module}
|
||||
Re-parse and re-initialize an already imported \var{module}. The
|
||||
Reload a previously imported \var{module}. The
|
||||
argument must be a module object, so it must have been successfully
|
||||
imported before. This is useful if you have edited the module
|
||||
source file using an external editor and want to try out the new
|
||||
version without leaving the Python interpreter. The return value is
|
||||
the module object (the same as the \var{module} argument).
|
||||
|
||||
There are a number of caveats:
|
||||
When \code{reload(module)} is executed:
|
||||
|
||||
\begin{itemize}
|
||||
|
||||
\item{Python modules' code is recompiled and the module-level code
|
||||
reexecuted, defining a new set of objects which are bound to names in
|
||||
the module's dictionary. The \code{init} function of extension
|
||||
modules is not called a second time.}
|
||||
|
||||
\item{As with all other objects in Python the old objects are only
|
||||
reclaimed after their reference counts drop to zero.}
|
||||
|
||||
\item{The names in the module namespace are updated to point to
|
||||
any new or changed objects.}
|
||||
|
||||
\item{Other references to the old objects (such as names external
|
||||
to the module) are not rebound to refer to the new objects and
|
||||
must be updated in each namespace where they occur if that is
|
||||
desired.}
|
||||
|
||||
\end{itemize}
|
||||
|
||||
There are a number of other caveats:
|
||||
|
||||
If a module is syntactically correct but its initialization fails,
|
||||
the first \keyword{import} statement for it does not bind its name
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue