3. How are str type strings different from Unicode strings ?

Unicode is a general representation of some text, which can be encoded in many different ways into a sequence of binary data represented via str. In Python 3, unicode was renamed to str and there is a new bytes type for a plain sequence of bytes.