Reputation: 391
Could somebody explain the general purpose of the bytes type in Python 3, or give some examples where it is preferred over other data types?
I see that the advantage of bytearrays over strings is their mutability, but what about bytes? So far, the only situation where I actually needed it was sending and receiving data through sockets; is there something else?
Upvotes: 29
Views: 33645
Reputation: 11357
Sockets is a good case for using bytes
. Also you should use bytes
to read/write binary data, like image or audio, from a file or a web API. The str
type is an immutable sequence of character, which is typically UTF8
encoded. Obviously if your data is not characters, then doing the UTF8
encoding on it will be inefficient and could cause bugs.
Upvotes: 1
Reputation: 956
Possible duplicate of what is the difference between a string and a byte string
In short, the bytes type is a sequence of bytes that have been encoded and are ready to be stored in memory/disk. There are many types of encodings (utf-8, utf-16, windows-1255), which all handle the bytes differently. The bytes object can be decoded into a str type.
The str type is a sequence of unicode characters. The str needs to be encoded to be stored, but is mutable and an abstraction of the bytes logic.
There is a strong relationship between str
and bytes
. bytes
can be decoded into a str
, and str
s can be encoded into bytes.
You typically only have to use bytes
when you encounter a string in the wild with a unique encoding, or when a library requires it. str
, especially in python3, will handle the rest.
Upvotes: 19