You are correct that there&#x27;s no real benefit in UTF-32 over UTF-8, which is why Go and Rust (and others) have worked with UTF-8 in memory just fine.  However, the actual encoding of a str object is irrelevant, and it&#x27;s not the point.  The whole point of the str&#x2F;bytes difference in Python is that you make Python keep track of whether you&#x27;ve done the conversion or not.  In Python 2, you can be sloppy, and the programs are buggy as a result!<p>You&#x27;re putting the cart before the horse here in terms of the Python 3 transition.  The str&#x2F;unicode fix was one of the driving factors for Python 3 to exist in the first place, and if you removed it, then what&#x27;s the point?<p>Again, look at Go or Rust.  Both of them have separate types for strings and bytes, even though they have the same representation in memory, and as a result we don&#x27;t have that kind of bug in our program.