I was checking the documentation [1] to see where to put the new information about bytes and bytearray %-formatting, and noticed that /every/ operation that could modify a bytearray object in place (e.g. center, capitalize, strip, etc.) instead returns a new copy. The section just prior to that [2] does say, "As bytearray objects are mutable, they support the mutable sequence operations ...". So it seems that when bytearray is treated as ascii data a new bytearry is returned, and when bytearray is treated as a container it is modified in place: New: bytearray(b'Chapter Title').center() bytearray(b' Chapter Title ').replace(b' ', b'- * - ') In-place: bytearray(b'abc'][1] = ord(b'z') bytearray(b'def'] += b'ghi' bytearray(b'123'] *= 3 I now have a minor dilemma: %-formatting is an ascii operation, but it also has an in-place operator (%=) . . . so does %= modify the bytearray in place just like += and *= do, or does it return a new bytearray just like all the named ascii operations do? I do not know which is more surprising: having one of the in-place operators not work in place, or having an unnamed ascii-operation not return a new copy. Thoughts? -- ~Ethan~ [1] https://docs.python.org/3/library/stdtypes.html#bytes-and-bytearray-operations [2] https://docs.python.org/3/library/stdtypes.html#bytearray-objects -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 836 bytes Desc: OpenPGP digital signature URL: <http://mail.python.org/pipermail/python-dev/attachments/20150119/9a7be275/attachment.sig>
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4