[Python-Dev] Replacement for array.array('u')?

Steve Dower steve.dower at python.org
Mon Mar 25 11:48:59 EDT 2019


On 25Mar2019 0812, Martin (gzlist) wrote:
> On Fri, 22 Mar 2019 at 16:12, Steve Dower <steve.dower at python.org> wrote:
>>
>> On 22Mar2019 0433, Antoine Pitrou wrote:
>>> The question is: why would you use a array.array() with a Windows C API?
>>
>> I started replying to this with a whole lot of examples, and eventually
>> convinced myself that you wouldn't (or shouldn't).
>>
>> That said, I see value in having a type for array/struct/memoryview that
>> "is the same size as wchar_t", since that will avoid people having to
>> guess (the docs for array in particular are deliberately vague about the
>> actual size of the various types).
> 
> This is pretty much what ctypes provides for dealing with unicode?
> 
> https://docs.python.org/3/library/ctypes.html#ctypes.create_unicode_buffer
> 
> Seems a fine place to have things that help with win32 api interactions.

Sure, though there are other reasons to deal with "pure" data that would 
benefit from having the data type in array. I don't need to directly 
refer to an existing buffer in memory, just to easily create/reinterpret 
bytes (for which memoryview is often better, though it inherits its 
codes from struct, which has no 'u' code, which is probably why I end up 
using array instead ;) )

Also, I keep finding that every time I deploy Python these days, it's 
critical to remove ctypes to reduce the attack surface area (I'm getting 
it into more and more high value systems where the rules are more 
strict). So I'm a big fan of treating ctypes as optional.

Cheers,
Steve


More information about the Python-Dev mailing list