Объекты bytes
Эти функции вызывают TypeError, если ожидают параметр типа bytes, а вызываются с параметром другого типа.
-
type PyBytesObject -
Этот подтип
PyObjectпредставляет объект Python bytes.
-
PyTypeObject PyBytes_Type -
Входит в стабильный ABI.
Этот экземпляр
PyTypeObjectпредставляет тип Python bytes; на уровне Python это тот же объект, что иbytes.
-
int PyBytes_Check(PyObject *o) -
Возвращает true, если объект o является объектом bytes или экземпляром подтипа типа bytes. Эта функция всегда завершается успешно.
-
int PyBytes_CheckExact(PyObject *o) -
Возвращает true, если объект o является объектом bytes, но не экземпляром подтипа типа bytes. Эта функция всегда завершается успешно.
-
PyObject *PyBytes_FromString(const char *v) -
Возвращаемое значение: новая ссылка.Входит в стабильный ABI.
При успешном выполнении возвращает новый объект bytes, содержащий копию строки v, а при ошибке —
NULL. Параметр v не должен бытьNULL; его значение не проверяется.
-
PyObject *PyBytes_FromStringAndSize(const char *v, Py_ssize_t len) -
Возвращаемое значение: новая ссылка.Входит в стабильный ABI.
При успешном выполнении возвращает новый объект bytes, содержащий копию строки v и имеющий длину len, а при ошибке —
NULL. Если v имеет значениеNULL, содержимое объекта bytes не инициализируется.
-
PyObject *PyBytes_FromFormat(const char *format, ...) -
Возвращаемое значение: новая ссылка.Входит в стабильный ABI.
Принимает строку формата в стиле C
printf()и переменное число аргументов, вычисляет размер результирующего объекта Python bytes и возвращает объект bytes с отформатированными значениями. Аргументы должны иметь типы C и в точности соответствовать символам формата в строке format. Допускаются следующие символы формата:Символы формата
Тип
Комментарий
%%не применимо
Символ % как есть.
%cint
Один байт, представленный как int в C.
%dint
Эквивалентно
printf("%d"). [1]%uunsigned int
Эквивалентно
printf("%u"). [1]%ldlong
Эквивалентно
printf("%ld"). [1]%luunsigned long
Эквивалентно
printf("%lu"). [1]%zdЭквивалентно
printf("%zd"). [1]%zusize_t
Эквивалентно
printf("%zu"). [1]%iint
Эквивалентно
printf("%i"). [1]%xint
Эквивалентно
printf("%x"). [1]%sconst char*
Массив символов C с завершающим нулевым символом.
%pconst void*
Шестнадцатеричное представление указателя C. В основном эквивалентно
printf("%p"), за исключением того, что гарантированно начинается с символа0xнезависимо от того, что возвращаетprintfплатформы.Неизвестный символ формата приводит к тому, что вся оставшаяся часть строки формата копируется в результирующий объект без изменений, а все дополнительные аргументы отбрасываются.
-
PyObject *PyBytes_FromFormatV(const char *format, va_list vargs) -
Возвращаемое значение: новая ссылка.Входит в стабильный ABI.
Идентична
PyBytes_FromFormat(), за исключением того, что принимает ровно два аргумента.
-
PyObject *PyBytes_FromObject(PyObject *o) -
Возвращаемое значение: новая ссылка.Входит в стабильный ABI.
Возвращает байтовое представление объекта o, реализующего протокол буфера.
-
Py_ssize_t PyBytes_Size(PyObject *o) -
Входит в стабильный ABI.
Возвращает длину объекта bytes o в байтах.
-
Py_ssize_t PyBytes_GET_SIZE(PyObject *o) -
Подобна
PyBytes_Size(), но не выполняет проверку ошибок.
-
char *PyBytes_AsString(PyObject *o) -
Входит в стабильный ABI.
Возвращает указатель на содержимое o. Указатель ссылается на внутренний буфер o, который содержит
len(o) + 1байт. Последний байт буфера всегда равен нулю, независимо от наличия других нулевых байтов. Данные нельзя изменять каким-либо образом, кроме случая, когда объект только что создан с помощьюPyBytes_FromStringAndSize(NULL, size). Освобождать память нельзя. Если o вообще не является объектом bytes,PyBytes_AsString()возвращаетNULLи вызываетTypeError.
-
char *PyBytes_AS_STRING(PyObject *string) -
Подобна
PyBytes_AsString(), но не выполняет проверку ошибок.
-
int PyBytes_AsStringAndSize(PyObject *obj, char **buffer, Py_ssize_t *length) -
Входит в стабильный ABI.
Возвращает содержимое объекта obj с завершающим нулевым символом через выходные переменные buffer и length. При успешном выполнении возвращает
0.Если length имеет значение
NULL, объект bytes не должен содержать встроенных нулевых байтов; в противном случае функция возвращает-1и вызывает исключениеValueError.Буфер ссылается на внутренний буфер obj, который содержит дополнительный нулевой байт в конце (не учитываемый в length). Данные нельзя изменять каким-либо образом, кроме случая, когда объект только что создан с помощью
PyBytes_FromStringAndSize(NULL, size). Освобождать память нельзя. Если obj вообще не является объектом bytes,PyBytes_AsStringAndSize()возвращает-1и вызываетTypeError.Изменено в версии 3.5: Ранее при обнаружении встроенных нулевых байтов в объекте bytes вызывалось исключение
TypeError.
-
void PyBytes_Concat(PyObject **bytes, PyObject *newpart) -
Входит в стабильный ABI.
Создаёт новый объект bytes в *bytes, добавляя содержимое newpart в конец bytes; вызывающая сторона получает новую ссылку. Ссылка на прежнее значение bytes будет передана функции. Если создать новый объект не удаётся, прежняя ссылка на bytes всё равно будет удалена, а значению *bytes будет присвоено
NULL; будет установлено соответствующее исключение.
-
void PyBytes_ConcatAndDel(PyObject **bytes, PyObject *newpart) -
Входит в стабильный ABI.
Создаёт новый объект bytes в *bytes, добавляя содержимое newpart в конец bytes. Эта версия освобождает сильную ссылку на newpart (то есть уменьшает счётчик ссылок на него).
-
int _PyBytes_Resize(PyObject **bytes, Py_ssize_t newsize) -
Изменяет размер объекта bytes. newsize задаёт новую длину объекта bytes. Это можно представить как создание нового объекта bytes и уничтожение старого, но более эффективным способом. Передайте адрес существующего объекта bytes в качестве lvalue (в него может быть записано новое значение) и желаемый новый размер. При успешном выполнении *bytes содержит объект bytes с изменённым размером, а функция возвращает
0; адрес в *bytes может отличаться от исходного. Если перераспределение памяти завершается неудачно, исходный объект bytes по адресу *bytes освобождается, *bytes присваивается значениеNULL, устанавливаетсяMemoryError, а функция возвращает-1.
© 2001–2025 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.13/c-api/bytes.html