On Apr 12, 8:52 am, [EMAIL PROTECTED] (John J. Lee) wrote: > Christian Heimes <[EMAIL PROTECTED]> writes: > > Gabriel Genellina schrieb: > >> On the last line, str(x), I would expect 'abc' - same as str(x, 'ascii') > >> above. But I get the same as repr(x) - is this on purpose? > > > Yes, it's on purpose but it's a bug in your application to call str() on > > a bytes object or to compare bytes and unicode directly. Several months > > ago I added a bytes warning option to Python. Start Python as "python > > -bb" and try it again. ;) > > Why hasn't the one-argument str(bytes_obj) been designed to raise an > exception in Python 3? > > John
Because it's a fundamental rule that you should be able to call str() on any object and get a sensible result. The reason that calling str() on a bytes object returns a bytes literal rather than an unadorned character string is that there are no default encodings or decodings: there is no way of determining what the corresponding string should be. John Roth -- http://mail.python.org/mailman/listinfo/python-list