“Python/docs/3.9/c-api/bytearray”的版本间差异

来自菜鸟教程
Python/docs/3.9/c-api/bytearray
跳转至:导航、​搜索
(autoload)
 
(Page commit)
 
第1行: 第1行:
 +
{{DISPLAYTITLE:字节数组对象 — Python 文档}}
 
<div id="byte-array-objects" class="section">
 
<div id="byte-array-objects" class="section">
  
 
<span id="bytearrayobjects"></span>
 
<span id="bytearrayobjects"></span>
= Byte Array Objects =
+
= 字节数组对象 =
  
 
<span id="index-0" class="target"></span>
 
<span id="index-0" class="target"></span>
; ''type'' <code>PyByteArrayObject</code>
+
; <span class="k"><span class="pre">type</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">PyByteArrayObject</span></span></span><br />
: This subtype of [[../structures#c|<code>PyObject</code>]] represents a Python bytearray object.
 
  
; [[../type#c|PyTypeObject]] <code>PyByteArray_Type</code>
+
: [[../structures#c|PyObject]] 的这个子类型表示一个 Python 字节数组对象。
: This instance of [[../type#c|<code>PyTypeObject</code>]] represents the Python bytearray type; it is the same object as [[../../library/stdtypes#bytearray|<code>bytearray</code>]] in the Python layer.
+
 
 +
; [[../type#c|<span class="n"><span class="pre">PyTypeObject</span></span>]]<span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">PyByteArray_Type</span></span></span><br />
 +
 
 +
: [[../type#c|PyTypeObject]] 的这个实例代表 Python 字节数组类型; 它与 Python 层中的 [[../../library/stdtypes#bytearray|bytearray]] 是同一个对象。
  
 
<div id="type-check-macros" class="section">
 
<div id="type-check-macros" class="section">
  
== Type check macros ==
+
== 类型检查宏 ==
 +
 
 +
; <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">PyByteArray_Check</span></span></span><span class="sig-paren">(</span>[[../structures#c|<span class="n"><span class="pre">PyObject</span></span>]]<span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">o</span></span><span class="sig-paren">)</span><br />
 +
 
 +
: 如果对象 ''o'' 是 bytearray 对象或 bytearray 类型的子类型的实例,则返回 true。 此功能总是成功。
  
; int <code>PyByteArray_Check</code><span class="sig-paren">(</span>[[../structures#c|PyObject]] *''o''<span class="sig-paren">)</span>
+
; <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">PyByteArray_CheckExact</span></span></span><span class="sig-paren">(</span>[[../structures#c|<span class="n"><span class="pre">PyObject</span></span>]]<span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">o</span></span><span class="sig-paren">)</span><br />
: Return true if the object ''o'' is a bytearray object or an instance of a subtype of the bytearray type.
 
  
; int <code>PyByteArray_CheckExact</code><span class="sig-paren">(</span>[[../structures#c|PyObject]] *''o''<span class="sig-paren">)</span>
+
: 如果对象 ''o'' bytearray 对象,但不是 bytearray 类型的子类型的实例,则返回 true。 此功能总是成功。
: Return true if the object ''o'' is a bytearray object, but not an instance of a subtype of the bytearray type.
 
  
  
第25行: 第30行:
 
<div id="direct-api-functions" class="section">
 
<div id="direct-api-functions" class="section">
  
== Direct API functions ==
+
== 直接 API 函数 ==
 +
 
 +
; [[../structures#c|<span class="n"><span class="pre">PyObject</span></span>]]<span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">PyByteArray_FromObject</span></span></span><span class="sig-paren">(</span>[[../structures#c|<span class="n"><span class="pre">PyObject</span></span>]]<span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">o</span></span><span class="sig-paren">)</span><br />
 +
 
 +
: 从实现 [[../buffer#bufferobjects|缓冲区协议]] 的任何对象 ''o'' 返回一个新的字节数组对象。
 +
 
 +
; [[../structures#c|<span class="n"><span class="pre">PyObject</span></span>]]<span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">PyByteArray_FromStringAndSize</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">string</span></span>, <span class="n"><span class="pre">Py_ssize_t</span></span><span class="w"> </span><span class="n"><span class="pre">len</span></span><span class="sig-paren">)</span><br />
 +
 
 +
: 从 ''string'' 及其长度 ''len'' 创建一个新的字节数组对象。 失败时,返回 <code>NULL</code>。
 +
 
 +
; [[../structures#c|<span class="n"><span class="pre">PyObject</span></span>]]<span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">PyByteArray_Concat</span></span></span><span class="sig-paren">(</span>[[../structures#c|<span class="n"><span class="pre">PyObject</span></span>]]<span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">a</span></span>, [[../structures#c|<span class="n"><span class="pre">PyObject</span></span>]]<span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">b</span></span><span class="sig-paren">)</span><br />
 +
 
 +
: 连接字节数组 ''a'' 和 ''b'' 并返回一个带有结果的新字节数组。
  
<dl>
+
; <span class="n"><span class="pre">Py_ssize_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">PyByteArray_Size</span></span></span><span class="sig-paren">(</span>[[../structures#c|<span class="n"><span class="pre">PyObject</span></span>]]<span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">bytearray</span></span><span class="sig-paren">)</span><br />
<dt>[[../structures#c|PyObject]] *<code>PyByteArray_FromObject</code><span class="sig-paren">(</span>[[../structures#c|PyObject]] *''o''<span class="sig-paren">)</span></dt>
 
<dd><p>''Return value: New reference.''</p>
 
<p>Return a new bytearray object from any object, ''o'', that implements the
 
[[../buffer#bufferobjects|<span class="std std-ref">buffer protocol</span>]].</p></dd></dl>
 
  
<dl>
+
: 检查 <code>NULL</code> 指针后返回 ''bytearray'' 的大小。
<dt>[[../structures#c|PyObject]] *<code>PyByteArray_FromStringAndSize</code><span class="sig-paren">(</span>''const'' char *''string'', Py_ssize_t ''len''<span class="sig-paren">)</span></dt>
 
<dd><p>''Return value: New reference.''</p>
 
<p>Create a new bytearray object from ''string'' and its length, ''len''. On
 
failure, <code>NULL</code> is returned.</p></dd></dl>
 
  
<dl>
+
; <span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">PyByteArray_AsString</span></span></span><span class="sig-paren">(</span>[[../structures#c|<span class="n"><span class="pre">PyObject</span></span>]]<span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">bytearray</span></span><span class="sig-paren">)</span><br />
<dt>[[../structures#c|PyObject]] *<code>PyByteArray_Concat</code><span class="sig-paren">(</span>[[../structures#c|PyObject]] *''a'', [[../structures#c|PyObject]] *''b''<span class="sig-paren">)</span></dt>
 
<dd><p>''Return value: New reference.''</p>
 
<p>Concat bytearrays ''a'' and ''b'' and return a new bytearray with the result.</p></dd></dl>
 
  
; Py_ssize_t <code>PyByteArray_Size</code><span class="sig-paren">(</span>[[../structures#c|PyObject]] *''bytearray''<span class="sig-paren">)</span>
+
: 检查 <code>NULL</code> 指针后,将 ''bytearray'' 的内容作为字符数组返回。 返回的数组总是附加一个额外的空字节。
: Return the size of ''bytearray'' after checking for a <code>NULL</code> pointer.
 
  
; char *<code>PyByteArray_AsString</code><span class="sig-paren">(</span>[[../structures#c|PyObject]] *''bytearray''<span class="sig-paren">)</span>
+
; <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">PyByteArray_Resize</span></span></span><span class="sig-paren">(</span>[[../structures#c|<span class="n"><span class="pre">PyObject</span></span>]]<span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">bytearray</span></span>, <span class="n"><span class="pre">Py_ssize_t</span></span><span class="w"> </span><span class="n"><span class="pre">len</span></span><span class="sig-paren">)</span><br />
: Return the contents of ''bytearray'' as a char array after checking for a <code>NULL</code> pointer. The returned array always has an extra null byte appended.
 
  
; int <code>PyByteArray_Resize</code><span class="sig-paren">(</span>[[../structures#c|PyObject]] *''bytearray'', Py_ssize_t ''len''<span class="sig-paren">)</span>
+
: ''bytearray'' 的内部缓冲区大小调整为 ''len''
: Resize the internal buffer of ''bytearray'' to ''len''.
 
  
  
第57行: 第60行:
 
<div id="macros" class="section">
 
<div id="macros" class="section">
  
== Macros ==
+
== ==
 +
 
 +
这些宏以安全换取速度,并且不检查指针。
 +
 
 +
; <span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">PyByteArray_AS_STRING</span></span></span><span class="sig-paren">(</span>[[../structures#c|<span class="n"><span class="pre">PyObject</span></span>]]<span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">bytearray</span></span><span class="sig-paren">)</span><br />
 +
 
 +
: [[#c.PyByteArray_AsString|PyByteArray_AsString()]] 的宏版本。
  
These macros trade safety for speed and they don't check pointers.
+
; <span class="n"><span class="pre">Py_ssize_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">PyByteArray_GET_SIZE</span></span></span><span class="sig-paren">(</span>[[../structures#c|<span class="n"><span class="pre">PyObject</span></span>]]<span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">bytearray</span></span><span class="sig-paren">)</span><br />
  
; char *<code>PyByteArray_AS_STRING</code><span class="sig-paren">(</span>[[../structures#c|PyObject]] *''bytearray''<span class="sig-paren">)</span>
+
: [[#c.PyByteArray_Size|PyByteArray_Size()]] 的宏版本。
: Macro version of [[#c.PyByteArray_AsString|<code>PyByteArray_AsString()</code>]].
 
  
; Py_ssize_t <code>PyByteArray_GET_SIZE</code><span class="sig-paren">(</span>[[../structures#c|PyObject]] *''bytearray''<span class="sig-paren">)</span>
 
: Macro version of [[#c.PyByteArray_Size|<code>PyByteArray_Size()</code>]].
 
  
 +
</div>
  
 
</div>
 
</div>
 +
<div class="clearer">
 +
 +
  
 
</div>
 
</div>
  
[[Category:Python 3.9 中文文档]]
+
[[Category:Python 3.9 文档]]

2021年10月31日 (日) 04:50的最新版本

字节数组对象

type PyByteArrayObject
PyObject 的这个子类型表示一个 Python 字节数组对象。
PyTypeObject PyByteArray_Type
PyTypeObject 的这个实例代表 Python 字节数组类型; 它与 Python 层中的 bytearray 是同一个对象。

类型检查宏

int PyByteArray_Check(PyObject *o)
如果对象 o 是 bytearray 对象或 bytearray 类型的子类型的实例,则返回 true。 此功能总是成功。
int PyByteArray_CheckExact(PyObject *o)
如果对象 o 是 bytearray 对象,但不是 bytearray 类型的子类型的实例,则返回 true。 此功能总是成功。


直接 API 函数

PyObject *PyByteArray_FromObject(PyObject *o)
从实现 缓冲区协议 的任何对象 o 返回一个新的字节数组对象。
PyObject *PyByteArray_FromStringAndSize(const char *string, Py_ssize_t len)
string 及其长度 len 创建一个新的字节数组对象。 失败时,返回 NULL
PyObject *PyByteArray_Concat(PyObject *a, PyObject *b)
连接字节数组 ab 并返回一个带有结果的新字节数组。
Py_ssize_t PyByteArray_Size(PyObject *bytearray)
检查 NULL 指针后返回 bytearray 的大小。
char *PyByteArray_AsString(PyObject *bytearray)
检查 NULL 指针后,将 bytearray 的内容作为字符数组返回。 返回的数组总是附加一个额外的空字节。
int PyByteArray_Resize(PyObject *bytearray, Py_ssize_t len)
bytearray 的内部缓冲区大小调整为 len


这些宏以安全换取速度,并且不检查指针。

char *PyByteArray_AS_STRING(PyObject *bytearray)
PyByteArray_AsString() 的宏版本。
Py_ssize_t PyByteArray_GET_SIZE(PyObject *bytearray)
PyByteArray_Size() 的宏版本。