Normalize whitespace.
Fix a number of markup consistency buglets.
This commit is contained in:
parent
f2928eb017
commit
5c4cf1587b
|
@ -48,7 +48,7 @@ sets that can't be modified, and can be used as dictionary keys. Sets
|
|||
are built on top of dictionaries, so the elements within a set must be
|
||||
hashable.
|
||||
|
||||
As a simple example,
|
||||
As a simple example,
|
||||
|
||||
\begin{verbatim}
|
||||
>>> import sets
|
||||
|
@ -63,12 +63,12 @@ False
|
|||
>>> S.remove(3)
|
||||
>>> S
|
||||
Set([1, 2, 5])
|
||||
>>>
|
||||
>>>
|
||||
\end{verbatim}
|
||||
|
||||
The union and intersection of sets can be computed with the
|
||||
\method{union()} and \method{intersection()} methods, or,
|
||||
alternatively, using the bitwise operators \samp{\&} and \samp{|}.
|
||||
alternatively, using the bitwise operators \code{\&} and \code{|}.
|
||||
Mutable sets also have in-place versions of these methods,
|
||||
\method{union_update()} and \method{intersection_update()}.
|
||||
|
||||
|
@ -79,7 +79,7 @@ Mutable sets also have in-place versions of these methods,
|
|||
Set([1, 2, 3, 4, 5, 6])
|
||||
>>> S1 | S2 # Alternative notation
|
||||
Set([1, 2, 3, 4, 5, 6])
|
||||
>>> S1.intersection(S2)
|
||||
>>> S1.intersection(S2)
|
||||
Set([])
|
||||
>>> S1 & S2 # Alternative notation
|
||||
Set([])
|
||||
|
@ -87,7 +87,7 @@ Set([])
|
|||
Set([1, 2, 3, 4, 5, 6])
|
||||
>>> S1
|
||||
Set([1, 2, 3, 4, 5, 6])
|
||||
>>>
|
||||
>>>
|
||||
\end{verbatim}
|
||||
|
||||
It's also possible to take the symmetric difference of two sets. This
|
||||
|
@ -165,7 +165,7 @@ def generate_ints(N):
|
|||
A new keyword, \keyword{yield}, was introduced for generators. Any
|
||||
function containing a \keyword{yield} statement is a generator
|
||||
function; this is detected by Python's bytecode compiler which
|
||||
compiles the function specially as a result.
|
||||
compiles the function specially as a result.
|
||||
|
||||
When you call a generator function, it doesn't return a single value;
|
||||
instead it returns a generator object that supports the iterator
|
||||
|
@ -239,7 +239,7 @@ Two other examples in \file{Lib/test/test_generators.py} produce
|
|||
solutions for the N-Queens problem (placing $N$ queens on an $NxN$
|
||||
chess board so that no queen threatens another) and the Knight's Tour
|
||||
(a route that takes a knight to every square of an $NxN$ chessboard
|
||||
without visiting any square twice).
|
||||
without visiting any square twice).
|
||||
|
||||
The idea of generators comes from other programming languages,
|
||||
especially Icon (\url{http://www.cs.arizona.edu/icon/}), where the
|
||||
|
@ -293,7 +293,7 @@ file. For example, a UTF-8 file can be declared with:
|
|||
\end{verbatim}
|
||||
|
||||
Without such an encoding declaration, the default encoding used is
|
||||
ISO-8859-1, also known as Latin1.
|
||||
ISO-8859-1, also known as Latin1.
|
||||
|
||||
The encoding declaration only affects Unicode string literals; the
|
||||
text in the source code will be converted to Unicode using the
|
||||
|
@ -356,24 +356,24 @@ plus a newline.
|
|||
|
||||
Python's file objects can now support end of line conventions other
|
||||
than the one followed by the platform on which Python is running.
|
||||
Opening a file with the mode \samp{U} or \samp{rU} will open a file
|
||||
Opening a file with the mode \code{'U'} or \code{'rU'} will open a file
|
||||
for reading in universal newline mode. All three line ending
|
||||
conventions will be translated to a \samp{\e n} in the strings
|
||||
conventions will be translated to a \character{\e n} in the strings
|
||||
returned by the various file methods such as \method{read()} and
|
||||
\method{readline()}.
|
||||
\method{readline()}.
|
||||
|
||||
Universal newline support is also used when importing modules and when
|
||||
executing a file with the \function{execfile()} function. This means
|
||||
that Python modules can be shared between all three operating systems
|
||||
without needing to convert the line-endings.
|
||||
|
||||
This feature can be disabled at compile-time by specifying
|
||||
This feature can be disabled at compile-time by specifying
|
||||
\longprogramopt{without-universal-newlines} when running Python's
|
||||
\file{configure} script.
|
||||
\program{configure} script.
|
||||
|
||||
\begin{seealso}
|
||||
|
||||
\seepep{278}{Universal Newline Support}{Written
|
||||
\seepep{278}{Universal Newline Support}{Written
|
||||
and implemented by Jack Jansen.}
|
||||
|
||||
\end{seealso}
|
||||
|
@ -408,7 +408,7 @@ for i, item in enumerate(L):
|
|||
|
||||
\begin{seealso}
|
||||
|
||||
\seepep{279}{The enumerate() built-in function}{Written
|
||||
\seepep{279}{The enumerate() built-in function}{Written
|
||||
by Raymond D. Hettinger.}
|
||||
|
||||
\end{seealso}
|
||||
|
@ -449,7 +449,7 @@ False
|
|||
|
||||
Python's Booleans were added with the primary goal of making code
|
||||
clearer. For example, if you're reading a function and encounter the
|
||||
statement \code{return 1}, you might wonder whether the \samp{1}
|
||||
statement \code{return 1}, you might wonder whether the \code{1}
|
||||
represents a truth value, or whether it's an index, or whether it's a
|
||||
coefficient that multiplies some other quantity. If the statement is
|
||||
\code{return True}, however, the meaning of the return value is quite
|
||||
|
@ -479,7 +479,8 @@ random object, and the Boolean type is a subclass of the
|
|||
To sum up \constant{True} and \constant{False} in a sentence: they're
|
||||
alternative ways to spell the integer values 1 and 0, with the single
|
||||
difference that \function{str()} and \function{repr()} return the
|
||||
strings \samp{True} and \samp{False} instead of \samp{1} and \samp{0}.
|
||||
strings \code{'True'} and \code{'False'} instead of \code{'1'} and
|
||||
\code{'0'}.
|
||||
|
||||
\begin{seealso}
|
||||
|
||||
|
@ -517,7 +518,7 @@ XML character references.
|
|||
|
||||
\begin{seealso}
|
||||
|
||||
\seepep{293}{Codec Error Handling Callbacks}{Written and implemented by
|
||||
\seepep{293}{Codec Error Handling Callbacks}{Written and implemented by
|
||||
Walter D\"orwald.}
|
||||
|
||||
\end{seealso}
|
||||
|
@ -533,7 +534,7 @@ legal Python syntax: \code{L[1:10:2]}, \code{L[:-1:1]},
|
|||
the developers of Numerical Python. However, the built-in sequence
|
||||
types of lists, tuples, and strings have never supported this feature,
|
||||
and you got a \exception{TypeError} if you tried it. Michael Hudson
|
||||
contributed a patch that was applied to Python 2.3 and fixed this
|
||||
contributed a patch that was applied to Python 2.3 and fixed this
|
||||
shortcoming.
|
||||
|
||||
For example, you can now easily extract the elements of a list that
|
||||
|
@ -638,9 +639,9 @@ class FakeSeq:
|
|||
...
|
||||
def __getitem__(self, item):
|
||||
if isinstance(item, slice):
|
||||
return FakeSeq([self.calc_item(i)
|
||||
return FakeSeq([self.calc_item(i)
|
||||
in range(*item.indices(len(self)))])
|
||||
else:
|
||||
else:
|
||||
return self.calc_item(i)
|
||||
\end{verbatim}
|
||||
|
||||
|
@ -660,7 +661,7 @@ language.
|
|||
\item The \keyword{yield} statement is now always a keyword, as
|
||||
described in section~\ref{section-generators} of this document.
|
||||
|
||||
\item A new built-in function \function{enumerate()}
|
||||
\item A new built-in function \function{enumerate()}
|
||||
was added, as described in section~\ref{section-enumerate} of this
|
||||
document.
|
||||
|
||||
|
@ -668,7 +669,7 @@ document.
|
|||
added along with the built-in \class{bool} type, as described in
|
||||
section~\ref{section-bool} of this document.
|
||||
|
||||
\item Built-in types now support the extended slicing syntax,
|
||||
\item Built-in types now support the extended slicing syntax,
|
||||
as described in section~\ref{section-slices} of this document.
|
||||
|
||||
\item Dictionaries have a new method, \method{pop(\var{key})}, that
|
||||
|
@ -700,7 +701,7 @@ KeyError: pop(): dictionary is empty
|
|||
|
||||
\item The \keyword{assert} statement no longer checks the \code{__debug__}
|
||||
flag, so you can no longer disable assertions by assigning to \code{__debug__}.
|
||||
Running Python with the \programopt{-O} switch will still generate
|
||||
Running Python with the \programopt{-O} switch will still generate
|
||||
code that doesn't execute any assertions.
|
||||
|
||||
\item Most type objects are now callable, so you can use them
|
||||
|
@ -720,7 +721,7 @@ For example, you can create a new module object with the following code:
|
|||
'docstring'
|
||||
\end{verbatim}
|
||||
|
||||
\item
|
||||
\item
|
||||
A new warning, \exception{PendingDeprecationWarning} was added to
|
||||
indicate features which are in the process of being
|
||||
deprecated. The warning will \emph{not} be printed by default. To
|
||||
|
@ -742,7 +743,7 @@ by setting the limit back to a lower number by calling
|
|||
|
||||
\item One minor but far-reaching change is that the names of extension
|
||||
types defined by the modules included with Python now contain the
|
||||
module and a \samp{.} in front of the type name. For example, in
|
||||
module and a \character{.} in front of the type name. For example, in
|
||||
Python 2.2, if you created a socket and printed its
|
||||
\member{__class__}, you'd get this output:
|
||||
|
||||
|
@ -825,7 +826,7 @@ than \method{zfill()}.
|
|||
|
||||
(Contributed by Walter D\"orwald.)
|
||||
|
||||
\item A new type object, \class{basestring}, has been added.
|
||||
\item A new type object, \class{basestring}, has been added.
|
||||
Both 8-bit strings and Unicode strings inherit from this type, so
|
||||
\code{isinstance(obj, basestring)} will return \constant{True} for
|
||||
either kind of string. It's a completely abstract type, so you
|
||||
|
@ -878,16 +879,16 @@ details.
|
|||
\begin{itemize}
|
||||
|
||||
\item The \module{array} module now supports arrays of Unicode
|
||||
characters using the \samp{u} format character. Arrays also now
|
||||
characters using the \character{u} format character. Arrays also now
|
||||
support using the \code{+=} assignment operator to add another array's
|
||||
contents, and the \code{*=} assignment operator to repeat an array.
|
||||
(Contributed by Jason Orendorff.)
|
||||
|
||||
\item The Distutils \class{Extension} class now supports
|
||||
an extra constructor argument named \samp{depends} for listing
|
||||
\item The Distutils \class{Extension} class now supports
|
||||
an extra constructor argument named \var{depends} for listing
|
||||
additional source files that an extension depends on. This lets
|
||||
Distutils recompile the module if any of the dependency files are
|
||||
modified. For example, if \samp{sampmodule.c} includes the header
|
||||
modified. For example, if \file{sampmodule.c} includes the header
|
||||
file \file{sample.h}, you would create the \class{Extension} object like
|
||||
this:
|
||||
|
||||
|
@ -909,7 +910,7 @@ recently-added extensions to Distutils.
|
|||
|
||||
\item The \module{getopt} module gained a new function,
|
||||
\function{gnu_getopt()}, that supports the same arguments as the existing
|
||||
\function{getopt()} function but uses GNU-style scanning mode.
|
||||
\function{getopt()} function but uses GNU-style scanning mode.
|
||||
The existing \function{getopt()} stops processing options as soon as a
|
||||
non-option argument is encountered, but in GNU-style mode processing
|
||||
continues, meaning that options and arguments can be mixed. For
|
||||
|
@ -925,7 +926,7 @@ example:
|
|||
(Contributed by Peter \AA{strand}.)
|
||||
|
||||
\item The \module{grp}, \module{pwd}, and \module{resource} modules
|
||||
now return enhanced tuples:
|
||||
now return enhanced tuples:
|
||||
|
||||
\begin{verbatim}
|
||||
>>> import grp
|
||||
|
@ -981,9 +982,9 @@ sequence type. For example:
|
|||
|
||||
(Contributed by Kevin O'Connor.)
|
||||
|
||||
\item Two new functions in the \module{math} module,
|
||||
\item Two new functions in the \module{math} module,
|
||||
\function{degrees(\var{rads})} and \function{radians(\var{degs})},
|
||||
convert between radians and degrees. Other functions in the
|
||||
convert between radians and degrees. Other functions in the
|
||||
\module{math} module such as
|
||||
\function{math.sin()} and \function{math.cos()} have always required
|
||||
input values measured in radians. (Contributed by Raymond Hettinger.)
|
||||
|
@ -994,10 +995,10 @@ input values measured in radians. (Contributed by Raymond Hettinger.)
|
|||
\module{posix} module that underlies the \module{os} module.
|
||||
(Contributed by Gustavo Niemeyer and Geert Jansen.)
|
||||
|
||||
\item The parser objects provided by the \module{pyexpat} module
|
||||
\item The parser objects provided by the \module{pyexpat} module
|
||||
can now optionally buffer character data, resulting in fewer calls to
|
||||
your character data handler and therefore faster performance. Setting
|
||||
the parser object's \member{buffer_text} attribute to \constant{True}
|
||||
the parser object's \member{buffer_text} attribute to \constant{True}
|
||||
will enable buffering.
|
||||
|
||||
\item The \function{sample(\var{population}, \var{k})} function was
|
||||
|
@ -1039,7 +1040,7 @@ unavoidable race conditions.
|
|||
can call the \method{settimeout(\var{t})} method on a socket object to
|
||||
set a timeout of \var{t} seconds. Subsequent socket operations that
|
||||
take longer than \var{t} seconds to complete will abort and raise a
|
||||
\exception{socket.error} exception.
|
||||
\exception{socket.error} exception.
|
||||
|
||||
The original timeout implementation was by Tim O'Malley. Michael
|
||||
Gilfix integrated it into the Python \module{socket} module, after the
|
||||
|
@ -1047,7 +1048,7 @@ patch had undergone a lengthy review. After it was checked in, Guido
|
|||
van~Rossum rewrote parts of it. This is a good example of the free
|
||||
software development process in action.
|
||||
|
||||
\item The value of the C \constant{PYTHON_API_VERSION} macro is now exposed
|
||||
\item The value of the C \constant{PYTHON_API_VERSION} macro is now exposed
|
||||
at the Python level as \code{sys.api_version}.
|
||||
|
||||
\item The new \module{textwrap} module contains functions for wrapping
|
||||
|
@ -1063,8 +1064,8 @@ string, reformatted to fit into lines no longer than the chosen width.
|
|||
>>> import textwrap
|
||||
>>> paragraph = "Not a whit, we defy augury: ... more text ..."
|
||||
>>> textwrap.wrap(paragraph, 60)
|
||||
["Not a whit, we defy augury: there's a special providence in",
|
||||
"the fall of a sparrow. If it be now, 'tis not to come; if it",
|
||||
["Not a whit, we defy augury: there's a special providence in",
|
||||
"the fall of a sparrow. If it be now, 'tis not to come; if it",
|
||||
...]
|
||||
>>> print textwrap.fill(paragraph, 35)
|
||||
Not a whit, we defy augury: there's
|
||||
|
@ -1073,20 +1074,20 @@ a sparrow. If it be now, 'tis not
|
|||
to come; if it be not to come, it
|
||||
will be now; if it be not now, yet
|
||||
it will come: the readiness is all.
|
||||
>>>
|
||||
>>>
|
||||
\end{verbatim}
|
||||
|
||||
The module also contains a \class{TextWrapper} class that actually
|
||||
implements the text wrapping strategy. Both the
|
||||
implements the text wrapping strategy. Both the
|
||||
\class{TextWrapper} class and the \function{wrap()} and
|
||||
\function{fill()} functions support a number of additional keyword
|
||||
arguments for fine-tuning the formatting; consult the module's
|
||||
documentation for details.
|
||||
documentation for details.
|
||||
% XXX add a link to the module docs?
|
||||
(Contributed by Greg Ward.)
|
||||
|
||||
\item The \module{time} module's \function{strptime()} function has
|
||||
long been an annoyance because it uses the platform C library's
|
||||
long been an annoyance because it uses the platform C library's
|
||||
\function{strptime()} implementation, and different platforms
|
||||
sometimes have odd bugs. Brett Cannon contributed a portable
|
||||
implementation that's written in pure Python, which should behave
|
||||
|
@ -1190,7 +1191,7 @@ Thanks to lots of work by Tim Peters, pymalloc in 2.3 also provides
|
|||
debugging features to catch memory overwrites and doubled frees in
|
||||
both extension modules and in the interpreter itself. To enable this
|
||||
support, turn on the Python interpreter's debugging code by running
|
||||
\program{configure} with \longprogramopt{with-pydebug}.
|
||||
\program{configure} with \longprogramopt{with-pydebug}.
|
||||
|
||||
To aid extension writers, a header file \file{Misc/pymemcompat.h} is
|
||||
distributed with the source to Python 2.3 that allows Python
|
||||
|
@ -1246,7 +1247,7 @@ allocate objects, and \cfunction{PyObject_GC_Del} to deallocate them.
|
|||
|
||||
\item Python can now optionally be built as a shared library
|
||||
(\file{libpython2.3.so}) by supplying \longprogramopt{enable-shared}
|
||||
when running Python's \file{configure} script. (Contributed by Ondrej
|
||||
when running Python's \program{configure} script. (Contributed by Ondrej
|
||||
Palkovsky.)
|
||||
|
||||
\item The \csimplemacro{DL_EXPORT} and \csimplemacro{DL_IMPORT} macros
|
||||
|
@ -1256,9 +1257,9 @@ modules should now be declared using the new macro
|
|||
use the \csimplemacro{PyAPI_FUNC} and \csimplemacro{PyAPI_DATA}
|
||||
macros.
|
||||
|
||||
\item The interpreter can be compiled without any docstrings for
|
||||
\item The interpreter can be compiled without any docstrings for
|
||||
the built-in functions and modules by supplying
|
||||
\longprogramopt{without-doc-strings} to the \file{configure} script.
|
||||
\longprogramopt{without-doc-strings} to the \program{configure} script.
|
||||
This makes the Python executable about 10\% smaller, but will also
|
||||
mean that you can't get help for Python's built-ins. (Contributed by
|
||||
Gustavo Niemeyer.)
|
||||
|
@ -1266,25 +1267,25 @@ Gustavo Niemeyer.)
|
|||
\item The cycle detection implementation used by the garbage collection
|
||||
has proven to be stable, so it's now being made mandatory; you can no
|
||||
longer compile Python without it, and the
|
||||
\longprogramopt{with-cycle-gc} switch to \file{configure} has been removed.
|
||||
\longprogramopt{with-cycle-gc} switch to \program{configure} has been removed.
|
||||
|
||||
\item The \cfunction{PyArg_NoArgs()} macro is now deprecated, and code
|
||||
that uses it should be changed. For Python 2.2 and later, the method
|
||||
definition table can specify the
|
||||
\constant{METH_NOARGS} flag, signalling that there are no arguments, and
|
||||
\constant{METH_NOARGS} flag, signalling that there are no arguments, and
|
||||
the argument checking can then be removed. If compatibility with
|
||||
pre-2.2 versions of Python is important, the code could use
|
||||
\code{PyArg_ParseTuple(args, "")} instead, but this will be slower
|
||||
\code{PyArg_ParseTuple(args, "")} instead, but this will be slower
|
||||
than using \constant{METH_NOARGS}.
|
||||
|
||||
\item A new function, \cfunction{PyObject_DelItemString(\var{mapping},
|
||||
char *\var{key})} was added
|
||||
as shorthand for
|
||||
as shorthand for
|
||||
\code{PyObject_DelItem(\var{mapping}, PyString_New(\var{key})}.
|
||||
|
||||
\item File objects now manage their internal string buffer
|
||||
differently by increasing it exponentially when needed.
|
||||
This results in the benchmark tests in \file{Lib/test/test_bufio.py}
|
||||
differently by increasing it exponentially when needed.
|
||||
This results in the benchmark tests in \file{Lib/test/test_bufio.py}
|
||||
speeding up from 57 seconds to 1.7 seconds, according to one
|
||||
measurement.
|
||||
|
||||
|
@ -1295,7 +1296,7 @@ structure.
|
|||
|
||||
\item Python now includes a copy of the Expat XML parser's source code,
|
||||
removing any dependence on a system version or local installation of
|
||||
Expat.
|
||||
Expat.
|
||||
|
||||
\end{itemize}
|
||||
|
||||
|
@ -1373,17 +1374,17 @@ variable name in your code, a different name must be chosen.
|
|||
\item You can no longer disable assertions by assigning to \code{__debug__}.
|
||||
|
||||
\item Using \code{None} as a variable name will now result in a
|
||||
\exception{SyntaxWarning} warning.
|
||||
\exception{SyntaxWarning} warning.
|
||||
|
||||
\item Names of extension types defined by the modules included with
|
||||
Python now contain the module and a \samp{.} in front of the type
|
||||
name.
|
||||
Python now contain the module and a \character{.} in front of the type
|
||||
name.
|
||||
|
||||
\item For strings \var{X} and \var{Y}, \code{\var{X} in \var{Y}} now works
|
||||
if \var{X} is more than one character long.
|
||||
|
||||
\item The Distutils \function{setup()} function has gained various new
|
||||
keyword arguments such as \samp{depends}. Old versions of the
|
||||
keyword arguments such as \var{depends}. Old versions of the
|
||||
Distutils will abort if passed unknown keywords. The fix is to check
|
||||
for the presence of the new \function{get_distutil_options()} function
|
||||
in your \file{setup.py} if you want to only support the new keywords
|
||||
|
@ -1395,7 +1396,7 @@ from distutils import core
|
|||
kw = {'sources': 'foo.c', ...}
|
||||
if hasattr(core, 'get_distutil_options'):
|
||||
kw['depends'] = ['foo.h']
|
||||
ext = Extension(**kw)
|
||||
ext = Extension(**kw)
|
||||
\end{verbatim}
|
||||
|
||||
\end{itemize}
|
||||
|
|
Loading…
Reference in New Issue