STINNER Victor added the comment:

Copy/paste of my msg283176:

> dict doesn't end with array.

Right, but...

Recently I looked at dict internals. As a newcomer, I have to confess that it's 
currently really hard to understand the purpose of each dict field: they are 
many "sizes": size of the hash table, number of usable entries, number of used 
entries, number of items in the dictionary, etc.

I like the idea of using the standard ob_size field (PyVarObject) to make it 
more explicitl that this field is the expected result of len(obj).

Technically, I don't know any function inside Python core which rely on the 
fact that object data is at the end of the main memory block.

Other builtin Python types:

* tuple: PyVarObject
* list: PyVarObject
* bytes: PyVarObject
* bytearray: PyVarObject
* memoryview: PyVarObject
* set: "used" field
* str: "length" field

The str type is super optimized for memory footprint, there are technical 
reasons for not used PyVarObject here, like backward compatibility.

It may make sense to modify PySetObject to use PyVarObject as well, but that's 
a different topic :-)

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue28988>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to