×
   ❮   
PYTHON FOR DJANGO DJANGO FOR BEGINNERS DJANGO SPECIFICS Roadmap
     ❯   

VARIABLES & TYPES IN PYTHON

Binary Type

Understanding Python Binary Types: bytes, bytearray, and memoryview

Introduction

In Python, binary types are used to handle sequences of bytes, which are essential for working with binary data. Python provides three main binary types: bytes, bytearray, and memoryview. Each type serves a specific purpose and offers different functionalities for managing and manipulating binary data.

Bytes

The bytes type represents an immutable sequence of bytes. This means that once a bytes object is created, its contents cannot be modified. The bytes type is often used to handle binary data that should not be altered, such as data read from files or received over a network.

Creating a Bytes Object

You can create a bytes object by prefixing a string literal with a b or by using the bytes() constructor. The string should be encoded in a specific encoding, such as UTF-8.

Example:

my_bytes = b"Hello"
print(my_bytes)

Output:

b'Hello'

In this example, my_bytes is a bytes object containing the byte sequence corresponding to the string "Hello".

Bytearray

The bytearray type represents a mutable sequence of bytes. Unlike bytes objects, bytearray objects can be modified after they are created. This makes bytearray useful for scenarios where you need to update or manipulate binary data.

Creating a Bytearray Object

You can create a bytearray object by passing an iterable of integers (0-255) to the bytearray() constructor.

Example:

my_bytearray = bytearray([1, 2, 3])
print(my_bytearray)

Output:

bytearray(b'\x01\x02\x03')

In this example, my_bytearray is a bytearray object containing the byte sequence \x01\x02\x03. You can modify this bytearray using various methods such as append(), extend(), and remove().

Memoryview

The memoryview type provides a way to access the internal data of an object without copying it. This allows for efficient handling of large binary data, especially when working with file I/O or data buffers. A memoryview object gives you access to the data of an underlying binary object, like bytes or bytearray, without creating a copy.

Creating a Memoryview Object

You can create a memoryview object by passing a binary object (such as a bytes or bytearray) to the memoryview() constructor.

Example:

my_bytearray = bytearray([1, 2, 3, 4, 5])
my_memoryview = memoryview(my_bytearray)
print(my_memoryview)

Output:


In this example, my_memoryview is a memoryview object that provides access to the data in my_bytearray. This allows you to manipulate the underlying byte data without making a copy, which is useful for performance when dealing with large amounts of binary data.

Conclusion

Python's binary types—bytes, bytearray, and memoryview—offer different ways to work with binary data. bytes provides an immutable sequence of bytes, bytearray offers a mutable sequence, and memoryview allows efficient access to the underlying data without copying. Understanding these types and their functionalities is crucial for effectively managing binary data in Python.