Steven D'Aprano wrote:
str(b'123') # b prefix is added
"b'123'"


Perhaps I'm misinterpreting it, but from here it looks to me that str() is doing what repr() used to do, and I'm really not sure that's a good thing. I would have expected that str(b'123') in Python 3 should do the same thing as unicode('123') does now:

No, you are getting it right and yes, it's problematic. Guido wanted str(b'') to succeed. But the behavior can easily mask bugs in code. Therefor a byte warning mode was implemented.


$ ./python -b
>>> str(b'123')
__main__:1: BytesWarning: str() on a bytes instance
"b'123'"

$ ./python -bb
>>> str(b'123')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
BytesWarning: str() on a bytes instance
>>> b'' == ''
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
BytesWarning: Comparison between bytes and string

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to