Spec-Zone.ru › Python 3.12

Объекты bytes

Эти функции вызывают TypeError, если ожидают параметр типа bytes, а вызваны с параметром другого типа.

type PyBytesObject

Этот подтип PyObject представляет объект bytes в Python.

PyTypeObject PyBytes_Type
Входит в стабильный ABI.

Этот экземпляр PyTypeObject представляет тип bytes в Python; на уровне 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.

Принимает строку format в стиле C printf() и переменное число аргументов, вычисляет размер результирующего объекта bytes в Python и возвращает объект bytes с отформатированными значениями. Переменные аргументы должны иметь типы C и точно соответствовать символам формата в строке format. Допускаются следующие символы формата:

Символы формата

Тип

Комментарий

%%

н/д

Символ % без преобразования.

%c

int

Один байт, представленный как C int.

%d

int

Эквивалентно printf("%d"). [1]

%u

unsigned int

Эквивалентно printf("%u"). [1]

%ld

long

Эквивалентно printf("%ld"). [1]

%lu

unsigned long

Эквивалентно printf("%lu"). [1]

%zd

Py_ssize_t

Эквивалентно printf("%zd"). [1]

%zu

size_t

Эквивалентно printf("%zu"). [1]

%i

int

Эквивалентно printf("%i"). [1]

%x

int

Эквивалентно printf("%x"). [1]

%s

const char*

Массив символов C с завершающим нулевым байтом.

%p

const void*

Шестнадцатеричное представление указателя C. В основном эквивалентно printf("%p"), за исключением того, что гарантированно начинается с буквального 0x независимо от того, какое значение возвращает printf платформы.

Нераспознанный символ формата приводит к тому, что остаток строки формата копируется в результирующий объект без изменений, а все лишние аргументы отбрасываются.

[1] (1,2,3,4,5,6,7,8)

Для спецификаторов целых чисел (d, u, ld, lu, zd, zu, i, x) флаг преобразования 0 действует даже при заданной точности.

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, несмотря на его «неизменяемость». Используйте эту функцию только для создания нового объекта bytes; не используйте её, если объект bytes уже может быть известен в других частях кода. Вызов этой функции является ошибкой, если счётчик ссылок входного объекта bytes не равен единице. Передайте адрес существующего объекта bytes как lvalue (в него можно записать новое значение) и желаемый новый размер. При успешном выполнении *bytes содержит объект bytes с изменённым размером, а функция возвращает 0; адрес в *bytes может отличаться от исходного значения. Если перераспределение памяти не удаётся, исходный объект bytes по адресу *bytes освобождается, *bytes устанавливается в NULL, устанавливается MemoryError, а функция возвращает -1.

© 2001–2024 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.12/c-api/bytes.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API