Python has two types of strings: Byte strings, and Unicode strings. On Python 2.x, these were largely interchangeable, but on Python 3, they matter. Mixing them on 2.x can lead to bugs as well.
This document details some key places where string types matter, and serves as a reference while undergoing the porting process to Python 3.