On Tue, Nov 21, 2017 at 05:37:36PM +0300, Kirill Balunov wrote:
Currently, __repr__ and __str__ representation of bytes is the same. Perhaps it is worth making them different, this will make it easier to visually perceive them as a container of integers from 0 to 255, instead of a mixture of printable and non-printable ascii characters. It is proposed:
a) __str__ - leave unchanged b) __repr__ - represent as sequence of escaped hex
a = bytes([42,43,44,45,46]) a # Current b'*+-./' a # Proposed b'\x2a\x2b\x2d\x2e\x2f'
I'd rather leave __str__ and __repr__ alone. Changing them will have huge backwards compatibility implications. I'd rather give bytes a hexdump() method that returns a string: '2a 2b 2d 2e 2f' (possibly with optional arguments to specify the formatting).
As you can see, the second example is more easily perceived as a sequence, in which '\' is also perceived as ',' in list or tuple.
I disagree. And if you perceive \ as a separator, why does the sequence start with a separator? And why are there so many x characters?
In addition, 2020 is close, it allows the new Pythonistas not to take them as an ascii mixture strings.
The special role of ASCII is far too important for us to ever completely discard it. -- Steve