summaryrefslogtreecommitdiffstats
path: root/Doc/lib/libdecimal.tex
diff options
context:
space:
mode:
Diffstat (limited to 'Doc/lib/libdecimal.tex')
-rw-r--r--Doc/lib/libdecimal.tex43
1 files changed, 22 insertions, 21 deletions
diff --git a/Doc/lib/libdecimal.tex b/Doc/lib/libdecimal.tex
index a0c7bde..127eb1d 100644
--- a/Doc/lib/libdecimal.tex
+++ b/Doc/lib/libdecimal.tex
@@ -435,36 +435,37 @@ Each thread has its own current context which is accessed or changed using
the \function{getcontext()} and \function{setcontext()} functions:
\begin{funcdesc}{getcontext}{}
- Return the current context for the active thread.
+ Return the current context for the active thread.
\end{funcdesc}
\begin{funcdesc}{setcontext}{c}
- Set the current context for the active thread to \var{c}.
+ Set the current context for the active thread to \var{c}.
\end{funcdesc}
Beginning with Python 2.5, you can also use the \keyword{with} statement
-to temporarily change the active context. For example the following code
-increases the current decimal precision by 2 places, performs a
-calculation, and then automatically restores the previous context:
-
+and the \function{localcontext()} function to temporarily change the
+active context.
+
+\begin{funcdesc}{localcontext}{\optional{c}}
+ Return a context manager that will set the current context for
+ the active thread to a copy of \var{c} on entry to the with-statement
+ and restore the previous context when exiting the with-statement. If
+ no context is specified, a copy of the current context is used.
+ \versionadded{2.5}
+
+ For example, the following code sets the current decimal precision
+ to 42 places, performs a calculation, and then automatically restores
+ the previous context:
\begin{verbatim}
-from __future__ import with_statement
-import decimal
+ from __future__ import with_statement
+ from decimal import localcontext
-with decimal.getcontext() as ctx:
- ctx.prec += 2 # add 2 more digits of precision
- calculate_something()
+ with localcontext() as ctx:
+ ctx.prec = 42 # Perform a high precision calculation
+ s = calculate_something()
+ s = +s # Round the final result back to the default precision
\end{verbatim}
-
-The context that's active in the body of the \keyword{with} statement is
-a \emph{copy} of the context you provided to the \keyword{with}
-statement, so modifying its attributes doesn't affect anything except
-that temporary copy.
-
-You can use any decimal context in a \keyword{with} statement, but if
-you just want to make a temporary change to some aspect of the current
-context, it's easiest to just use \function{getcontext()} as shown
-above.
+\end{funcdesc}
New contexts can also be created using the \class{Context} constructor
described below. In addition, the module provides three pre-made