[Python-ideas] Memoryview tolist() method is misleading

Alexander Belopolsky alexander.belopolsky at gmail.com
Mon Sep 3 17:21:50 CEST 2012

Consider this:

>>> memoryview(b'x').cast('B', ()).tolist()

The return value of to list() is an int, not a list.

I suggest to deprecate memoryview.tolist() and .tobytes() methods
(soft deprecation - in documentation only) and recommend using list(m)
and  bytes(m) instead.

For the multidimensional (and 0-dimensional) views, I suggest adding
an unpack([depth]) method that would unpack a view into a nested list
of tuples or subviews.  For example a single-byte scalar should unpack
as follows:

>>> m = memoryview(b'x').cast('B', ())
>>> m.unpack()

consistent with

>>> struct.unpack_from(m.format, m)

More information about the Python-ideas mailing list