YouTip LogoYouTip

Python3 Func Bytearray

## Python bytearray() Function The `bytearray()` function is a built-in Python constructor that returns a mutable sequence of bytes. While `bytearray` is highly similar to the `bytes` type, it has one critical difference: **it is mutable**. This means you can modify its elements, append new bytes, or delete existing ones in place without creating a new object. This makes `bytearray` exceptionally efficient for scenarios involving frequent modifications of binary data, such as network socket programming, file I/O buffering, and binary protocol parsing. --- ## Syntax and Parameters ### Syntax ```python bytearray() bytearray(source) bytearray(source, encoding) bytearray(source, encoding, errors) ``` ### Parameter Description The behavior of `bytearray()` depends heavily on the type of the `source` argument: * **No arguments**: Returns an empty `bytearray` of size 0. * **`source` is an Integer**: Returns a `bytearray` of the specified size initialized with null bytes (`\x00`). * **`source` is a String**: You **must** also provide the `encoding` parameter (and optionally, `errors`). The string is converted to bytes using `str.encode()`. * **`source` is an Iterable** (e.g., a list of integers): Must yield integers in the range `0 <= x < 256`, which are used as the initial contents of the array. * **`source` is an Object conforming to the Buffer Interface** (e.g., `bytes` or another `bytearray`): Uses a read-only buffer of the object to initialize the new byte array. ### Return Value Returns a new, mutable array of bytes (a `bytearray` object). --- ## Code Examples ### Example 1: Creating a `bytearray` The following example demonstrates the different ways to initialize a `bytearray` object: ```python # 1. Create a bytearray of a specified length initialized with null bytes b1 = bytearray(5) print(b1) # Output: bytearray(b'\x00\x00\x00\x00\x00') # 2. Create a bytearray from an iterable of integers (ASCII values) b2 = bytearray([72, 101, 108, 108, 111]) print(b2) # Output: bytearray(b'Hello') # 3. Create a bytearray from a string (encoding must be specified) b3 = bytearray("Hello World", encoding='utf-8') print(b3) # Output: bytearray(b'Hello World') # 4. Create an empty bytearray b4 = bytearray() print(b4) # Output: bytearray(b'') ``` **Expected Output:** ```text bytearray(b'\x00\x00\x00\x00\x00') bytearray(b'Hello') bytearray(b'Hello World') bytearray(b'') ``` --- ### Example 2: Modifying a `bytearray` Because `bytearray` is mutable, it supports in-place modifications, similar to a Python `list`. You can use index assignment, slicing, and list-like methods such as `append()`, `extend()`, and `pop()`. ```python # Initialize a bytearray b = bytearray("Hello", encoding='utf-8') print("Original: ", b) # Output: bytearray(b'Hello') # 1. Modify a single byte using its index (ASCII 74 is 'J') b = 74 print("Modified index 0: ", b) # Output: bytearray(b'Jello') # 2. Append a single byte to the end (ASCII 33 is '!') b.append(33) print("After append: ", b) # Output: bytearray(b'Jello!') # 3. Extend the bytearray with an iterable of bytes b.extend([33, 33]) print("After extend: ", b) # Output: bytearray(b'Jello!!!') # 4. Delete a byte using the 'del' keyword del b print("After deletion: ", b) # Output: bytearray(b'ello!!!') ``` **Expected Output:** ```text Original: bytearray(b'Hello') Modified index 0: bytearray(b'Jello') After append: bytearray(b'Jello!') After extend: bytearray(b'Jello!!!') After deletion: bytearray(b'ello!!!') ``` --- ## Key Considerations 1. **Value Constraints**: Elements within a `bytearray` must be integers between `0` and `255` inclusive. Attempting to assign a value outside this range will raise a `ValueError`. ```python b = bytearray(5) # This will raise ValueError: byte must be in range(0, 256) b = 300 ``` 2. **String Encoding Requirement**: When initializing a `bytearray` from a string, omitting the `encoding` parameter will raise a `TypeError`. ```python # This will raise TypeError: string argument without an encoding b = bytearray("Hello") ``` 3. **Performance**: If you are performing heavy string concatenations or binary manipulations, using a `bytearray` is significantly faster and consumes less memory than repeatedly concatenating immutable `bytes` objects.
← Python3 Func EvalPython3 Func Bin β†’