You're right that this subtly changes the meaning of the code on Python 2 -- but it changes it to be *more correct*. When you create a string in Python 2, you generally intend for it to be a unicode string -- and if you want it to be bytes, it's much more clear to explicitly convert it to a bytestring.