mirror of
https://github.com/python/cpython.git
synced 2025-08-03 16:39:00 +00:00
Merged revisions 59883-59920 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk ........ r59887 | neal.norwitz | 2008-01-10 06:42:58 +0100 (Thu, 10 Jan 2008) | 1 line Reword entry, not sure I made it much better though. ........ r59888 | andrew.kuchling | 2008-01-10 14:37:12 +0100 (Thu, 10 Jan 2008) | 1 line Check for fd of -1 to save fsync() and fstat() call ........ r59891 | thomas.heller | 2008-01-10 19:45:40 +0100 (Thu, 10 Jan 2008) | 1 line Reflow a paragraph, and fix a typo. ........ r59892 | raymond.hettinger | 2008-01-10 20:15:10 +0100 (Thu, 10 Jan 2008) | 1 line Examples for named tuple subclassing should include __slots__ ........ r59895 | raymond.hettinger | 2008-01-10 21:37:12 +0100 (Thu, 10 Jan 2008) | 1 line Clarify how to add a field to a named tuple. ........ r59896 | amaury.forgeotdarc | 2008-01-10 22:59:42 +0100 (Thu, 10 Jan 2008) | 12 lines Closing issue1761. Surprising behaviour of the "$" regexp: it matches the end of the string, AND just before the newline at the end of the string:: re.sub('$', '#', 'foo\n') == 'foo#\n#' Python is consistent with Perl and the pcre library, so we just document it. Guido prefers "\Z" to match only the end of the string. ........ r59898 | raymond.hettinger | 2008-01-11 00:00:01 +0100 (Fri, 11 Jan 2008) | 1 line Neaten-up the named tuple docs ........ r59900 | raymond.hettinger | 2008-01-11 01:23:13 +0100 (Fri, 11 Jan 2008) | 1 line Run doctests on the collections module ........ r59903 | raymond.hettinger | 2008-01-11 02:25:54 +0100 (Fri, 11 Jan 2008) | 1 line Doctest results return a named tuple for readability ........ r59904 | raymond.hettinger | 2008-01-11 03:12:33 +0100 (Fri, 11 Jan 2008) | 1 line Comment-out missing constant (from rev 59819) ........ r59905 | raymond.hettinger | 2008-01-11 03:24:13 +0100 (Fri, 11 Jan 2008) | 1 line Have Decimal.as_tuple return a named tuple. ........ r59906 | raymond.hettinger | 2008-01-11 04:04:50 +0100 (Fri, 11 Jan 2008) | 1 line Let most inspect functions return named tuples ........ r59907 | raymond.hettinger | 2008-01-11 04:20:54 +0100 (Fri, 11 Jan 2008) | 1 line Improve usability of the SequenceMatcher by returning named tuples describing match ranges. ........ r59909 | thomas.heller | 2008-01-11 09:04:03 +0100 (Fri, 11 Jan 2008) | 1 line Add an important missing blank. ........ r59910 | georg.brandl | 2008-01-11 10:19:11 +0100 (Fri, 11 Jan 2008) | 2 lines Guard definition of TIPC_SUB_CANCEL with an #ifdef. ........ r59911 | georg.brandl | 2008-01-11 10:20:58 +0100 (Fri, 11 Jan 2008) | 2 lines News entries for rev. 5990[567]. ........ r59912 | georg.brandl | 2008-01-11 10:55:53 +0100 (Fri, 11 Jan 2008) | 2 lines Documentation for r5990[3567]. ........ r59913 | thomas.heller | 2008-01-11 13:41:39 +0100 (Fri, 11 Jan 2008) | 4 lines The sqlite3 dll, when compiled in debug mode, must be linked with /MDd to use the debug runtime library. Further, the dll will be named sqlite3_d.dll. ........ r59919 | thomas.heller | 2008-01-11 16:38:46 +0100 (Fri, 11 Jan 2008) | 6 lines Revert revision 59913, because it was wrong: The sqlite3 dll, when compiled in debug mode, must be linked with /MDd to use the debug runtime library. Further, the dll will be named sqlite3_d.dll. ........ r59920 | christian.heimes | 2008-01-11 16:42:29 +0100 (Fri, 11 Jan 2008) | 1 line Removed unused variable ........
This commit is contained in:
parent
222e1279f8
commit
25bb783c03
20 changed files with 203 additions and 125 deletions
|
@ -397,8 +397,8 @@ they add the ability to access fields by name instead of position index.
|
|||
method which lists the tuple contents in a ``name=value`` format.
|
||||
|
||||
The *fieldnames* are a single string with each fieldname separated by whitespace
|
||||
and/or commas (for example 'x y' or 'x, y'). Alternatively, *fieldnames*
|
||||
can be a sequence of strings (such as ['x', 'y']).
|
||||
and/or commas, for example ``'x y'`` or ``'x, y'``. Alternatively, *fieldnames*
|
||||
can be a sequence of strings such as ``['x', 'y']``.
|
||||
|
||||
Any valid Python identifier may be used for a fieldname except for names
|
||||
starting with an underscore. Valid identifiers consist of letters, digits,
|
||||
|
@ -406,7 +406,7 @@ they add the ability to access fields by name instead of position index.
|
|||
a :mod:`keyword` such as *class*, *for*, *return*, *global*, *pass*, *print*,
|
||||
or *raise*.
|
||||
|
||||
If *verbose* is true, will print the class definition.
|
||||
If *verbose* is true, the class definition is printed just before being built.
|
||||
|
||||
Named tuple instances do not have per-instance dictionaries, so they are
|
||||
lightweight and require no more memory than regular tuples.
|
||||
|
@ -533,7 +533,7 @@ function::
|
|||
>>> getattr(p, 'x')
|
||||
11
|
||||
|
||||
To cast a dictionary to a named tuple, use the double-star-operator [#]_::
|
||||
To convert a dictionary to a named tuple, use the double-star-operator [#]_::
|
||||
|
||||
>>> d = {'x': 11, 'y': 22}
|
||||
>>> Point(**d)
|
||||
|
@ -544,23 +544,24 @@ functionality with a subclass. Here is how to add a calculated field and
|
|||
a fixed-width print format::
|
||||
|
||||
>>> class Point(namedtuple('Point', 'x y')):
|
||||
... __slots__ = ()
|
||||
... @property
|
||||
... def hypot(self):
|
||||
... return (self.x ** 2 + self.y ** 2) ** 0.5
|
||||
... def __str__(self):
|
||||
... return 'Point: x=%6.3f y=%6.3f hypot=%6.3f' % (self.x, self.y, self.hypot)
|
||||
... return 'Point: x=%6.3f y=%6.3f hypot=%6.3f' % (self.x, self.y, self.hypot)
|
||||
|
||||
>>> for p in Point(3,4), Point(14,5), Point(9./7,6):
|
||||
>>> for p in Point(3, 4), Point(14, 5/7.):
|
||||
... print(p)
|
||||
|
||||
Point: x= 3.000 y= 4.000 hypot= 5.000
|
||||
Point: x=14.000 y= 5.000 hypot=14.866
|
||||
Point: x= 1.286 y= 6.000 hypot= 6.136
|
||||
Point: x= 3.000 y= 4.000 hypot= 5.000
|
||||
Point: x=14.000 y= 0.714 hypot=14.018
|
||||
|
||||
Another use for subclassing is to replace performance critcal methods with
|
||||
faster versions that bypass error-checking and that localize variable access::
|
||||
faster versions that bypass error-checking::
|
||||
|
||||
class Point(namedtuple('Point', 'x y')):
|
||||
__slots__ = ()
|
||||
_make = classmethod(tuple.__new__)
|
||||
def _replace(self, _map=map, **kwds):
|
||||
return self._make(_map(kwds.get, ('x', 'y'), self))
|
||||
|
@ -569,7 +570,7 @@ faster versions that bypass error-checking and that localize variable access::
|
|||
Subclassing is not useful for adding new, stored fields. Instead, simply
|
||||
create a new named tuple type from the :attr:`_fields` attribute::
|
||||
|
||||
>>> Pixel = namedtuple('Pixel', Point._fields + Color._fields)
|
||||
>>> Point3D = namedtuple('Point3D', Point._fields + ('z',))
|
||||
|
||||
Default values can be implemented by using :meth:`_replace` to
|
||||
customize a prototype instance::
|
||||
|
|
|
@ -328,7 +328,11 @@ also have a number of specialized methods:
|
|||
|
||||
.. method:: Decimal.as_tuple()
|
||||
|
||||
Return a tuple representation of the number: ``(sign, digit_tuple, exponent)``.
|
||||
Return a :term:`named tuple` representation of the number:
|
||||
``DecimalTuple(sign, digits, exponent)``.
|
||||
|
||||
.. versionchanged:: 2.6
|
||||
Use a named tuple.
|
||||
|
||||
|
||||
.. method:: Decimal.canonical()
|
||||
|
|
|
@ -336,7 +336,7 @@ use :meth:`set_seq2` to set the commonly used sequence once and call
|
|||
|
||||
Find longest matching block in ``a[alo:ahi]`` and ``b[blo:bhi]``.
|
||||
|
||||
If *isjunk* was omitted or ``None``, :meth:`get_longest_match` returns ``(i, j,
|
||||
If *isjunk* was omitted or ``None``, :meth:`find_longest_match` returns ``(i, j,
|
||||
k)`` such that ``a[i:i+k]`` is equal to ``b[j:j+k]``, where ``alo <= i <= i+k <=
|
||||
ahi`` and ``blo <= j <= j+k <= bhi``. For all ``(i', j', k')`` meeting those
|
||||
conditions, the additional conditions ``k >= k'``, ``i <= i'``, and if ``i ==
|
||||
|
@ -365,6 +365,9 @@ use :meth:`set_seq2` to set the commonly used sequence once and call
|
|||
|
||||
If no blocks match, this returns ``(alo, blo, 0)``.
|
||||
|
||||
.. versionchanged:: 2.6
|
||||
This method returns a :term:`named tuple` ``Match(a, b, size)``.
|
||||
|
||||
|
||||
.. method:: SequenceMatcher.get_matching_blocks()
|
||||
|
||||
|
|
|
@ -1436,11 +1436,14 @@ DocTestRunner objects
|
|||
.. method:: DocTestRunner.summarize([verbose])
|
||||
|
||||
Print a summary of all the test cases that have been run by this DocTestRunner,
|
||||
and return a tuple ``(failure_count, test_count)``.
|
||||
and return a :term:`named tuple` ``TestResults(failed, attempted)``.
|
||||
|
||||
The optional *verbose* argument controls how detailed the summary is. If the
|
||||
verbosity is not specified, then the :class:`DocTestRunner`'s verbosity is used.
|
||||
|
||||
.. versionchanged:: 2.6
|
||||
Use a named tuple.
|
||||
|
||||
|
||||
.. _doctest-outputchecker:
|
||||
|
||||
|
|
|
@ -188,7 +188,8 @@ attributes:
|
|||
|
||||
.. function:: getmoduleinfo(path)
|
||||
|
||||
Return a tuple of values that describe how Python will interpret the file
|
||||
Returns a :term:`named tuple` ``ModuleInfo(name, suffix, mode,
|
||||
module_type)`` of values that describe how Python will interpret the file
|
||||
identified by *path* if it is a module, or ``None`` if it would not be
|
||||
identified as a module. The return tuple is ``(name, suffix, mode, mtype)``,
|
||||
where *name* is the name of the module without the name of any enclosing
|
||||
|
@ -377,8 +378,9 @@ Classes and functions
|
|||
|
||||
.. function:: getargspec(func)
|
||||
|
||||
Get the names and default values of a function's arguments. A tuple of four
|
||||
things is returned: ``(args, varargs, varkw, defaults)``. *args* is a list of
|
||||
Get the names and default values of a function's arguments. A
|
||||
:term:`named tuple` ``ArgSpec(args, varargs, keywords,
|
||||
defaults)`` is returned. *args* is a list of
|
||||
the argument names. *varargs* and *varkw* are the names of the ``*`` and
|
||||
``**`` arguments or ``None``. *defaults* is a tuple of default argument
|
||||
values or None if there are no default arguments; if this tuple has *n*
|
||||
|
@ -391,10 +393,10 @@ Classes and functions
|
|||
|
||||
.. function:: getfullargspec(func)
|
||||
|
||||
Get the names and default values of a function's arguments. A tuple of seven
|
||||
things is returned:
|
||||
Get the names and default values of a function's arguments. A :term:`named tuple`
|
||||
is returned:
|
||||
|
||||
``(args, varargs, varkw, defaults, kwonlyargs, kwonlydefaults, annotations)``
|
||||
``FullArgSpec(args, varargs, varkw, defaults, kwonlyargs, kwonlydefaults, annotations)``
|
||||
|
||||
*args* is a list of the argument names. *varargs* and *varkw* are the names
|
||||
of the ``*`` and ``**`` arguments or ``None``. *defaults* is an n-tuple of
|
||||
|
@ -408,8 +410,8 @@ Classes and functions
|
|||
|
||||
.. function:: getargvalues(frame)
|
||||
|
||||
Get information about arguments passed into a particular frame. A tuple of four
|
||||
things is returned: ``(args, varargs, varkw, locals)``. *args* is a list of the
|
||||
Get information about arguments passed into a particular frame. A :term:`named tuple`
|
||||
``ArgInfo(args, varargs, keywords, locals)`` is returned. *args* is a list of the
|
||||
argument names (it may contain nested lists). *varargs* and *varkw* are the
|
||||
names of the ``*`` and ``**`` arguments or ``None``. *locals* is the locals
|
||||
dictionary of the given frame.
|
||||
|
@ -476,8 +478,8 @@ line.
|
|||
|
||||
.. function:: getframeinfo(frame[, context])
|
||||
|
||||
Get information about a frame or traceback object. A 5-tuple is returned, the
|
||||
last five elements of the frame's frame record.
|
||||
Get information about a frame or traceback object. A :term:`named tuple`
|
||||
``Traceback(filename, lineno, function, code_context, index)`` is returned.
|
||||
|
||||
|
||||
.. function:: getouterframes(frame[, context])
|
||||
|
|
|
@ -98,7 +98,9 @@ The special characters are:
|
|||
string, and in :const:`MULTILINE` mode also matches before a newline. ``foo``
|
||||
matches both 'foo' and 'foobar', while the regular expression ``foo$`` matches
|
||||
only 'foo'. More interestingly, searching for ``foo.$`` in ``'foo1\nfoo2\n'``
|
||||
matches 'foo2' normally, but 'foo1' in :const:`MULTILINE` mode.
|
||||
matches 'foo2' normally, but 'foo1' in :const:`MULTILINE` mode; searching for
|
||||
a single ``$`` in ``'foo\n'`` will find two (empty) matches: one just before
|
||||
the newline, and one at the end of the string.
|
||||
|
||||
``'*'``
|
||||
Causes the resulting RE to match 0 or more repetitions of the preceding RE, as
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue