This is how to look at it.<p>First you need to think of text and binary (bytes) as two distinct types.<p>The text most of the times is how you interact with user, so things that you will display to the user, or what user enters to you.<p>Now, the text is stored in unicode (how, it&#x27;s not our concern, Python abstracts it from us), the bytes is representation how it&#x27;s stored in files, send over a network etc.<p>Now if you need to store text in a file, or send over network you need to <i>encode</i> it (most of the time as UTF-8), if you receive data which supposed to be text you <i>decode</i> it. It might be helpful to think of a text as a sound and bytes as mp3. You encode sound as mp3 to store it in a file, and when you want to play it back you decode it.<p>There are some things can cause a confusion. For example if you write text to a file, python will automatically apply the conversion. Things like that are there so you don&#x27;t have to do the conversion every single time.