-
-
Notifications
You must be signed in to change notification settings - Fork 98
Expand file tree
/
Copy pathrefcounting.po
More file actions
342 lines (292 loc) · 14.8 KB
/
refcounting.po
File metadata and controls
342 lines (292 loc) · 14.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
# SOME DESCRIPTIVE TITLE.
# Copyright (C) 2001 Python Software Foundation
# This file is distributed under the same license as the Python package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
# Translators:
# Rafael Fontenelle <rffontenelle@gmail.com>, 2026
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: Python 3.14\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-05-08 19:31+0000\n"
"PO-Revision-Date: 2026-05-08 17:16+0000\n"
"Last-Translator: Rafael Fontenelle <rffontenelle@gmail.com>, 2026\n"
"Language-Team: Chinese (China) (https://app.transifex.com/python-doc/teams/5390/zh_CN/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: zh_CN\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#: ../../c-api/refcounting.rst:8
msgid "Reference Counting"
msgstr "引用计数"
#: ../../c-api/refcounting.rst:10
msgid ""
"The functions and macros in this section are used for managing reference "
"counts of Python objects."
msgstr "本节介绍的函数和宏被用于管理 Python 对象的引用计数。"
#: ../../c-api/refcounting.rst:16
msgid "Get the reference count of the Python object *o*."
msgstr "获取 Python 对象 *o* 的引用计数。"
#: ../../c-api/refcounting.rst:18
msgid ""
"Note that the returned value may not actually reflect how many references to"
" the object are actually held. For example, some objects are "
":term:`immortal` and have a very high refcount that does not reflect the "
"actual number of references. Consequently, do not rely on the returned "
"value to be accurate, other than a value of 0 or 1."
msgstr ""
"请注意返回的值可能并不真正反映实际持有的对象引用数。例如,有些对象属于 :term:`immortal` 对象并具有并不反映实际引用数的非常高的 "
"refcount 值。因此,除了 0 或 1 这两个值,不要依赖返回值的准确性。"
#: ../../c-api/refcounting.rst:24
msgid ""
"Use the :c:func:`Py_SET_REFCNT()` function to set an object reference count."
msgstr "使用 :c:func:`Py_SET_REFCNT()` 函数来设置一个对象引用计数。"
#: ../../c-api/refcounting.rst:28
msgid ""
"On :term:`free-threaded builds <free-threaded build>` of Python, returning 1"
" isn't sufficient to determine if it's safe to treat *o* as having no access"
" by other threads. Use :c:func:`PyUnstable_Object_IsUniquelyReferenced` for "
"that instead."
msgstr ""
"在 Python 的 :term:`自由线程构建版 <free-threaded build>`,返回 1 并不足以确定是否能安全地将 *o* "
"视为不可被其他线程访问。对于此类场景请改用 :c:func:`PyUnstable_Object_IsUniquelyReferenced`。"
#: ../../c-api/refcounting.rst:33
msgid ""
"See also the function "
":c:func:`PyUnstable_Object_IsUniqueReferencedTemporary()`."
msgstr "另请参阅 :c:func:`PyUnstable_Object_IsUniqueReferencedTemporary()` 函数。"
#: ../../c-api/refcounting.rst:35
msgid ":c:func:`Py_REFCNT()` is changed to the inline static function."
msgstr ":c:func:`Py_REFCNT()` 被改为内联的静态函数。"
#: ../../c-api/refcounting.rst:38
msgid "The parameter type is no longer :c:expr:`const PyObject*`."
msgstr "形参类型不再是 :c:expr:`const PyObject*`。"
#: ../../c-api/refcounting.rst:44
msgid "Set the object *o* reference counter to *refcnt*."
msgstr "将对象 *o* 的引用计数器设为 *refcnt*。"
#: ../../c-api/refcounting.rst:46
msgid ""
"On :ref:`Python build with Free Threading <free-threading-build>`, if "
"*refcnt* is larger than ``UINT32_MAX``, the object is made :term:`immortal`."
msgstr ""
"在 :ref:`启用自由线程的 Python 编译版 <free-threading-build>` 中,如果 *refcnt* 大于 "
"``UINT32_MAX``,该对象将被设为 :term:`immortal` 对象。"
#: ../../c-api/refcounting.rst:49 ../../c-api/refcounting.rst:62
#: ../../c-api/refcounting.rst:128
msgid "This function has no effect on :term:`immortal` objects."
msgstr "此函数对 :term:`immortal` 对象没有效果。"
#: ../../c-api/refcounting.rst:53 ../../c-api/refcounting.rst:77
#: ../../c-api/refcounting.rst:156
msgid "Immortal objects are not modified."
msgstr "永生对象不会被修改。"
#: ../../c-api/refcounting.rst:59
msgid ""
"Indicate taking a new :term:`strong reference` to object *o*, indicating it "
"is in use and should not be destroyed."
msgstr "表示为对象 *o* 获取一个新的 :term:`strong reference`,指明该对象正在被使用且不应被销毁。"
#: ../../c-api/refcounting.rst:64
msgid ""
"This function is usually used to convert a :term:`borrowed reference` to a "
":term:`strong reference` in-place. The :c:func:`Py_NewRef` function can be "
"used to create a new :term:`strong reference`."
msgstr ""
"此函数通常被用来将 :term:`borrowed reference` 原地转换为 :term:`strong reference`。 "
":c:func:`Py_NewRef` 函数可被用来创建新的 :term:`strong reference`。"
#: ../../c-api/refcounting.rst:68
msgid "When done using the object, release is by calling :c:func:`Py_DECREF`."
msgstr "当对象使用完毕后,可调用 :c:func:`Py_DECREF` 来释放它。"
#: ../../c-api/refcounting.rst:70
msgid ""
"The object must not be ``NULL``; if you aren't sure that it isn't ``NULL``, "
"use :c:func:`Py_XINCREF`."
msgstr "此对象必须不为 ``NULL``;如果你不能确定它不为 ``NULL``,请使用 :c:func:`Py_XINCREF`。"
#: ../../c-api/refcounting.rst:73
msgid ""
"Do not expect this function to actually modify *o* in any way. For at least "
":pep:`some objects <0683>`, this function has no effect."
msgstr "不要预期此函数会以任何方式实际地改变 *o*。至少对 :pep:`某些对象 <0683>` 来说,此函数将没有任何效果。"
#: ../../c-api/refcounting.rst:83
msgid ""
"Similar to :c:func:`Py_INCREF`, but the object *o* can be ``NULL``, in which"
" case this has no effect."
msgstr "与 :c:func:`Py_INCREF` 类似,但对象 *o* 可以为 ``NULL``,在这种情况下此函数将没有任何效果。"
#: ../../c-api/refcounting.rst:86
msgid "See also :c:func:`Py_XNewRef`."
msgstr "另请参阅 :c:func:`Py_XNewRef`。"
#: ../../c-api/refcounting.rst:91
msgid ""
"Create a new :term:`strong reference` to an object: call :c:func:`Py_INCREF`"
" on *o* and return the object *o*."
msgstr ""
"为对象创建一个新的 :term:`strong reference`: 在 *o* 上调用 :c:func:`Py_INCREF` 并返回对象 *o*。"
#: ../../c-api/refcounting.rst:94
msgid ""
"When the :term:`strong reference` is no longer needed, :c:func:`Py_DECREF` "
"should be called on it to release the reference."
msgstr "当不再需要这个 :term:`strong reference` 时,应当在其上调用 :c:func:`Py_DECREF` 来释放引用。"
#: ../../c-api/refcounting.rst:97
msgid ""
"The object *o* must not be ``NULL``; use :c:func:`Py_XNewRef` if *o* can be "
"``NULL``."
msgstr "对象 *o* 必须不为 ``NULL``;如果 *o* 可以为 ``NULL`` 则应改用 :c:func:`Py_XNewRef`。"
#: ../../c-api/refcounting.rst:100
msgid "For example::"
msgstr "例如:"
#: ../../c-api/refcounting.rst:102
msgid ""
"Py_INCREF(obj);\n"
"self->attr = obj;"
msgstr ""
"Py_INCREF(obj);\n"
"self->attr = obj;"
#: ../../c-api/refcounting.rst:105
msgid "can be written as::"
msgstr "可以写成::"
#: ../../c-api/refcounting.rst:107
msgid "self->attr = Py_NewRef(obj);"
msgstr "self->attr = Py_NewRef(obj);"
#: ../../c-api/refcounting.rst:109
msgid "See also :c:func:`Py_INCREF`."
msgstr "另请参阅 :c:func:`Py_INCREF`。"
#: ../../c-api/refcounting.rst:116
msgid "Similar to :c:func:`Py_NewRef`, but the object *o* can be NULL."
msgstr "类似于 :c:func:`Py_NewRef`,但对象 *o* 可以为 NULL。"
#: ../../c-api/refcounting.rst:118
msgid "If the object *o* is ``NULL``, the function just returns ``NULL``."
msgstr "如果对象 *o* 为 ``NULL``,该函数也将返回 ``NULL``。"
#: ../../c-api/refcounting.rst:125
msgid ""
"Release a :term:`strong reference` to object *o*, indicating the reference "
"is no longer used."
msgstr "释放一个指向对象 *o* 的 :term:`strong reference`,表明该引用不再被使用。"
#: ../../c-api/refcounting.rst:130
msgid ""
"Once the last :term:`strong reference` is released (i.e. the object's "
"reference count reaches 0), the object's type's deallocation function (which"
" must not be ``NULL``) is invoked."
msgstr ""
"当最后一个 :term:`strong reference` 被释放时 (即对象的引用计数变为 0),将会调用该对象所属类型的 deallocation"
" 函数 (它必须不为 ``NULL``)。"
#: ../../c-api/refcounting.rst:135
msgid ""
"This function is usually used to delete a :term:`strong reference` before "
"exiting its scope."
msgstr "此函数通常被用于在退出作用域之前删除一个 :term:`strong reference`。"
#: ../../c-api/refcounting.rst:138
msgid ""
"The object must not be ``NULL``; if you aren't sure that it isn't ``NULL``, "
"use :c:func:`Py_XDECREF`."
msgstr "此对象必须不为 ``NULL``;如果你不能确定它不为 ``NULL``,请使用 :c:func:`Py_XDECREF`。"
#: ../../c-api/refcounting.rst:141
msgid ""
"Do not expect this function to actually modify *o* in any way. For at least "
":pep:`some objects <683>`, this function has no effect."
msgstr "不要预期此函数会以任何方式实际地改变 *o*。至少对 :pep:`某些对象 <683>` 来说,此函数将没有任何效果。"
#: ../../c-api/refcounting.rst:147
msgid ""
"The deallocation function can cause arbitrary Python code to be invoked "
"(e.g. when a class instance with a :meth:`~object.__del__` method is "
"deallocated). While exceptions in such code are not propagated, the "
"executed code has free access to all Python global variables. This means "
"that any object that is reachable from a global variable should be in a "
"consistent state before :c:func:`Py_DECREF` is invoked. For example, code "
"to delete an object from a list should copy a reference to the deleted "
"object in a temporary variable, update the list data structure, and then "
"call :c:func:`Py_DECREF` for the temporary variable."
msgstr ""
"释放函数会导致任意 Python 代码被调用(例如当一个带有 :meth:`~object.__del__` 方法的类实例被释放时就是如此)。 "
"虽然这些代码中的异常不会被传播,但被执行的代码能够自由访问所有 Python 全局变量。这意味着在调用 :c:func:`Py_DECREF` "
"之前任何可通过全局变量获取的对象都应该处于完好的状态。 "
"例如,从一个列表中删除对象的代码应该将被删除对象的引用拷贝到一个临时变量中,更新列表数据结构,然后再为临时变量调用 "
":c:func:`Py_DECREF`."
#: ../../c-api/refcounting.rst:162
msgid ""
"Similar to :c:func:`Py_DECREF`, but the object *o* can be ``NULL``, in which"
" case this has no effect. The same warning from :c:func:`Py_DECREF` applies "
"here as well."
msgstr ""
"与 :c:func:`Py_DECREF` 类似,但对象 *o* 可以为 ``NULL``,在这种情况下此函数将没有任何效果。来自 "
":c:func:`Py_DECREF` 的警告同样适用于此处。"
#: ../../c-api/refcounting.rst:169
msgid ""
"Release a :term:`strong reference` for object *o*. The object may be "
"``NULL``, in which case the macro has no effect; otherwise the effect is the"
" same as for :c:func:`Py_DECREF`, except that the argument is also set to "
"``NULL``. The warning for :c:func:`Py_DECREF` does not apply with respect "
"to the object passed because the macro carefully uses a temporary variable "
"and sets the argument to ``NULL`` before releasing the reference."
msgstr ""
"释放一个指向对象 *o* 的 :term:`strong reference`。对象可以为 "
"``NULL``,在此情况下该宏将没有任何效果;在其他情况下其效果与 :c:func:`Py_DECREF` 相同,区别在于其参数也会被设为 "
"``NULL``。针对 :c:func:`Py_DECREF` 的警告不适用于所传递的对象,因为该宏会细心地使用一个临时变量并在释放引用之前将参数设为 "
"``NULL``."
#: ../../c-api/refcounting.rst:177
msgid ""
"It is a good idea to use this macro whenever releasing a reference to an "
"object that might be traversed during garbage collection."
msgstr "当需要释放指向一个在垃圾回收期间可能会被遍历的对象的引用时使用该宏是一个好主意。"
#: ../../c-api/refcounting.rst:180
msgid ""
"The macro argument is now only evaluated once. If the argument has side "
"effects, these are no longer duplicated."
msgstr "该宏参数现在只会被求值一次。如果该参数具有附带影响,它们将不会再被复制。"
#: ../../c-api/refcounting.rst:187
msgid ""
"Indicate taking a new :term:`strong reference` to object *o*. A function "
"version of :c:func:`Py_XINCREF`. It can be used for runtime dynamic "
"embedding of Python."
msgstr ""
"表示获取一个指向对象 *o* 的新 :term:`strong reference`。 :c:func:`Py_XINCREF` 的函数版本。 "
"它可被用于 Python 的运行时动态嵌入。"
#: ../../c-api/refcounting.rst:194
msgid ""
"Release a :term:`strong reference` to object *o*. A function version of "
":c:func:`Py_XDECREF`. It can be used for runtime dynamic embedding of "
"Python."
msgstr ""
"释放一个指向对象 *o* 的 :term:`strong reference`。 :c:func:`Py_XDECREF` 的函数版本。它可被用于 "
"Python 的运行时动态嵌入。"
#: ../../c-api/refcounting.rst:201
msgid ""
"Macro safely releasing a :term:`strong reference` to object *dst* and "
"setting *dst* to *src*."
msgstr "该宏可安全地释放一个指向对象 *dst* 的 :term:`strong reference`,并将 *dst* 设为 *src*。"
#: ../../c-api/refcounting.rst:204
msgid "As in case of :c:func:`Py_CLEAR`, \"the obvious\" code can be deadly::"
msgstr "在 :c:func:`Py_CLEAR` 的情况中,这样“直观”的代码可能会是致命的::"
#: ../../c-api/refcounting.rst:206
msgid ""
"Py_DECREF(dst);\n"
"dst = src;"
msgstr ""
"Py_DECREF(dst);\n"
"dst = src;"
#: ../../c-api/refcounting.rst:209
msgid "The safe way is::"
msgstr "安全的方式是这样::"
#: ../../c-api/refcounting.rst:211
msgid "Py_SETREF(dst, src);"
msgstr "Py_SETREF(dst, src);"
#: ../../c-api/refcounting.rst:213
msgid ""
"That arranges to set *dst* to *src* *before* releasing the reference to the "
"old value of *dst*, so that any code triggered as a side-effect of *dst* "
"getting torn down no longer believes *dst* points to a valid object."
msgstr ""
"这样使得在释放对旧 *dst* 值的引用 *之前* 将 *dst* 设为 *src*,从而让任何因 *dst* 被去除而触发的代码不再相信 *dst* "
"指向一个有效的对象。"
#: ../../c-api/refcounting.rst:220 ../../c-api/refcounting.rst:232
msgid ""
"The macro arguments are now only evaluated once. If an argument has side "
"effects, these are no longer duplicated."
msgstr "该宏参数现在只会被求值一次。如果某个参数具有附带影响,它们将不会再被复制。"
#: ../../c-api/refcounting.rst:227
msgid ""
"Variant of :c:macro:`Py_SETREF` macro that uses :c:func:`Py_XDECREF` instead"
" of :c:func:`Py_DECREF`."
msgstr ""
"使用 :c:func:`Py_XDECREF` 代替 :c:func:`Py_DECREF` 的 :c:macro:`Py_SETREF` 宏的变种。"