Объекты bytes
Эти функции вызывают TypeError, если ожидают параметр bytes, но вызываются с параметром, не являющимся 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. Потокобезопасность: атомарная.
Принимает строку format в стиле C
printf()и переменное число аргументов, вычисляет размер результирующего объекта bytes Python и возвращает объект 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, реализующего протокол буфера.
Примечание
Если объект реализует протокол буфера, буфер нельзя изменять во время создания объекта 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, содержащий содержимое bytes с добавленным в конец содержимым newpart; вызывающий код получает новую ссылку. Ссылка на прежнее значение bytes будет «украдена». Если новый объект создать не удастся, старая ссылка на bytes всё равно будет «украдена», значение *bytes будет установлено в
NULL, а соответствующее исключение будет установлено.Примечание
Если newpart реализует протокол буфера, буфер нельзя изменять во время создания нового объекта bytes.
-
void PyBytes_ConcatAndDel(PyObject **bytes, PyObject *newpart) -
Часть стабильного ABI. Потокобезопасность: безопасно для параллельного использования с тем же объектом.
Создает новый объект bytes в *bytes, содержащий содержимое bytes с добавленным в конец содержимым newpart. Эта версия освобождает сильную ссылку на newpart (то есть уменьшает счетчик ссылок на него).
Примечание
Если newpart реализует протокол буфера, буфер нельзя изменять во время создания нового объекта bytes.
-
PyObject *PyBytes_Join(PyObject *sep, PyObject *iterable) -
Потокобезопасность: безопасно для параллельного использования с тем же объектом.
Аналогична
sep.join(iterable)в Python.sep должен быть объектом bytes в Python
bytes. (Обратите внимание, чтоPyUnicode_Join()принимает разделительNULLи интерпретирует его как пробел, тогда какPyBytes_Join()не принимает разделительNULL.)iterable должен быть итерируемым объектом, выдающим объекты, реализующие протокол буфера.
В случае успеха возвращает новый объект
bytes. В случае ошибки устанавливает исключение и возвращаетNULL.Добавлено в версии 3.14.
Примечание
Если объекты iterable реализуют протокол буфера, эти буферы нельзя изменять во время создания нового объекта bytes.
-
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.
-
PyObject *PyBytes_Repr(PyObject *bytes, int smartquotes) -
Часть стабильного ABI. Потокобезопасность: атомарная.
Возвращает строковое представление объекта bytes. В настоящее время эта функция используется для реализации
bytes.__repr__()в Python.Эта функция не проверяет тип; передача bytes в виде объекта, не являющегося bytes, или
NULLприводит к неопределенному поведению.Если smartquotes имеет значение true, в представлении будут использоваться двойные кавычки вместо одинарных, если в bytes присутствуют одинарные кавычки. Например, байтовая строка
'Python'будет представлена какb"'Python'", если smartquotes имеет значение true, или какb'\'Python\'', если оно равно false.В случае успеха эта функция возвращает сильную ссылку на объект
str, содержащий представление. В случае ошибки функция возвращаетNULLс установленным исключением.
-
PyObject *PyBytes_DecodeEscape(const char *s, Py_ssize_t len, const char *errors, Py_ssize_t unicode, const char *recode_encoding) -
Часть стабильного ABI. Потокобезопасность: атомарная.
Декодирует строку s с экранированными обратной косой чертой символами. s не должна быть
NULL. len должен задавать размер s.errors должно быть одним из значений
"strict","replace"или"ignore". Если errors равноNULL, по умолчанию используется"strict".В случае успеха эта функция возвращает сильную ссылку на объект Python
bytes, содержащий декодированную строку. В случае ошибки функция возвращаетNULLс установленным исключением.Изменено в версии 3.9: unicode и recode_encoding больше не используются.
© 2001 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.14/c-api/bytes.html