Spec-Zone.ru › Python 3.11

Объекты bytes

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

type PyBytesObject

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

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

Этот экземпляр PyTypeObject представляет тип bytes в Python; это тот же объект, что и bytes на уровне Python.

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() и переменное число аргументов, вычисляет размер получаемого объекта bytes в Python и возвращает объект bytes со значениями, отформатированными в соответствии с этой строкой. Переменные аргументы должны иметь типы C и в точности соответствовать символам формата в строке format. Допускаются следующие символы формата:

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

Тип

Комментарий

%%

н/д

Символ % в буквальном виде.

%c

int

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

%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 в виде bytes, если он реализует протокол буфера.

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.11/c-api/bytes.html

Spec-Zone.ru

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