document the memoryview object a little

This commit is contained in:
Benjamin Peterson 2008-09-09 22:15:27 +00:00
parent 3e84de05e0
commit 1b25b9284f
2 changed files with 93 additions and 3 deletions

View File

@ -665,9 +665,8 @@ are always available. They are listed here in alphabetical order.
.. function:: memoryview(obj)
Return a "memory view" object created from the given argument.
XXX: To be documented.
Return a "memory view" object created from the given argument. See
:ref:`typememoryview` for more information.
.. function:: min(iterable[, args...], *[, key])

View File

@ -2231,6 +2231,97 @@ the particular object.
mode the value of this attribute will be ``None``.
.. _typememoryview:
memoryview Types
================
:class:`memoryview`\s allow Python code to access the internal data of an object
that supports the buffer protocol. Memory can be interpreted as simple bytes or
complex data structures.
.. class:: memoryview(obj)
Create a :class:`memoryview`\s that references *obj*. *obj* must support the
buffer protocol. Builtin objects that support the buffer protocol include
:class:`bytes` and :class:`bytearray`.
A :class:`memoryview`\s supports slicing to expose its data. Taking a single
index will return a single byte. Full slicing will result in a subview/ ::
>>> v = memoryview(b'abcefg')
>>> v[1]
b'b'
>>> v[-1]
b'g'
>>> v[1:4]
<memory at 0x77ab28>
>>> bytes(v[1:4])
b'bce'
>>> v[3:-1]
<memory at 0x744f18>
>>> bytes(v[4:-1])
If the object the memoryview is over supports changing it's data, the
memoryview supports slice assignment. ::
>>> data = bytearray(b'abcefg')
>>> v = memoryview(data)
>>> v.readonly
False
>>> v[0] = 'z'
>>> data
bytearray(b'zbcefg')
>>> v[1:4] = b'123'
>>> data
bytearray(b'a123fg')
>>> v[2] = b'spam'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: cannot modify size of memoryview object
Notice how the size of the memoryview object can not be changed.
:class:`memoryview` has one method:
.. method:: tobytes()
Convert the data in the buffer to a bytestring and return it.
There are also several readonly attributes available:
.. attribute:: format
A string containing the format (in :mod:`struct` module style) for each
element in the view. This defaults to ``'B'``, a simple bytestring.
.. attribute:: itemsize
The size in bytes of each element of the memoryview.
.. attribute:: shape
A tuple of integers the length of :attr:`~memoryview.ndim` giving the
shape of the memory as a N-dimensional array.
.. attribute:: ndim
An integer indicating how many dimensions of a multi-dimensional array the
memory represents.
.. attribute:: strides
A tuple of integers the length of :attr:`~memoryview.ndim` giving the size
in bytes to access each element for each dimension of the array.
.. attribute:: size
The number of bytes in the buffer. Also available as ``len(view)``.
.. memoryview.suboffsets isn't documented because it only seems useful for C
.. _typecontextmanager:
Context Manager Types