@@ -11,7 +11,7 @@ msgid ""
11
11
msgstr ""
12
12
"Project-Id-Version : Python 3.11\n "
13
13
"Report-Msgid-Bugs-To : \n "
14
- "POT-Creation-Date : 2025-05-02 15:33 +0000\n "
14
+ "POT-Creation-Date : 2025-06-13 16:17 +0000\n "
15
15
"PO-Revision-Date : 2023-05-24 02:09+0000\n "
16
16
"Last-Translator : Rafael Fontenelle <rffontenelle@gmail.com>, 2025\n "
17
17
"Language-Team : Portuguese (Brazil) (https://app.transifex.com/python-doc/ "
@@ -518,6 +518,17 @@ msgid ""
518
518
"objects that reference each other here; for now, the solution is \" don't do "
519
519
"that.\" )"
520
520
msgstr ""
521
+ "A contagem de referências é importante porque os computadores atuais têm um "
522
+ "tamanho de memória finito (e frequentemente severamente limitado); ela conta "
523
+ "quantos lugares diferentes existem que possuem uma :term:`referência forte` "
524
+ "a um objeto. Tal lugar pode ser outro objeto, ou uma variável C global (ou "
525
+ "estática), ou uma variável local em alguma função C. Quando a última :term:"
526
+ "`referência forte` a um objeto é liberada (ou seja, sua contagem de "
527
+ "referências se torna zero), o objeto é desalocado. Se ele contiver "
528
+ "referências a outros objetos, essas referências são liberadas. Esses outros "
529
+ "objetos podem ser desalocados por sua vez, se não houver mais referências a "
530
+ "eles, e assim por diante. (Há um problema óbvio com objetos que referenciam "
531
+ "uns aos outros aqui; por enquanto, a solução é \" não faça isso\" .)"
521
532
522
533
#: ../../c-api/intro.rst:331
523
534
msgid ""
@@ -537,6 +548,22 @@ msgid ""
537
548
"``sizeof(Py_ssize_t) >= sizeof(void*)``). Thus, the reference count "
538
549
"increment is a simple operation."
539
550
msgstr ""
551
+ "Contagens de referências são sempre manipuladas explicitamente. A maneira "
552
+ "normal é usar a macro :c:func:`Py_INCREF` para obter uma nova referência a "
553
+ "um objeto (ou seja, incrementar sua contagem de referências em um), e :c:"
554
+ "func:`Py_DECREF` para liberar essa referência (ou seja, decrementar a "
555
+ "contagem de referências em um). A macro :c:func:`Py_DECREF` é "
556
+ "consideravelmente mais complexa do que a incref, pois deve verificar se a "
557
+ "contagem de referências se torna zero e, em seguida, fazer com que o "
558
+ "desalocador do objeto seja chamado. O desalocador é um ponteiro para função "
559
+ "contido na estrutura de tipo do objeto. O desalocador específico do tipo "
560
+ "cuida da liberação de referências para outros objetos contidos no objeto se "
561
+ "este for um tipo de objeto composto, como uma lista, bem como de executar "
562
+ "qualquer finalização adicional necessária. Não há chance de a contagem de "
563
+ "referências transbordar; pelo menos tantos bits são usados para armazenar a "
564
+ "contagem de referência quantos forem os locais de memória distintos na "
565
+ "memória virtual (presumindo ``sizeof(Py_ssize_t) >= sizeof(void*)``). "
566
+ "Portanto, o incremento da contagem de referências é uma operação simples."
540
567
541
568
#: ../../c-api/intro.rst:347
542
569
msgid ""
@@ -555,6 +582,21 @@ msgid ""
555
582
"that are called from Python; the call mechanism guarantees to hold a "
556
583
"reference to every argument for the duration of the call."
557
584
msgstr ""
585
+ "Não é necessário manter uma :term:`referência forte` (ou seja, incrementar a "
586
+ "contagem de referências) para cada variável local que contém um ponteiro "
587
+ "para um objeto. Em teoria, a contagem de referências do objeto aumenta em um "
588
+ "quando a variável é feita para apontar para ele e diminui em um quando a "
589
+ "variável sai do escopo. No entanto, esses dois se cancelam, portanto, no "
590
+ "final, a contagem de referências não mudou. A única razão real para usar a "
591
+ "contagem de referências é evitar que o objeto seja desalocado enquanto nossa "
592
+ "variável estiver apontando para ele. Se sabemos que existe pelo menos uma "
593
+ "outra referência ao objeto que vive pelo menos tanto quanto nossa variável, "
594
+ "não há necessidade de tomar uma nova :term:`referência forte` (ou seja, "
595
+ "incrementar a contagem de referências) temporariamente. Uma situação "
596
+ "importante em que isso ocorre é em objetos que são passados como argumentos "
597
+ "para funções C em um módulo de extensão que são chamados de Python; o "
598
+ "mecanismo de chamada garante manter uma referência a todos os argumentos "
599
+ "durante a chamada."
558
600
559
601
#: ../../c-api/intro.rst:363
560
602
msgid ""
@@ -566,6 +608,14 @@ msgid ""
566
608
"code path which allows control to flow back to the user from a :c:func:"
567
609
"`Py_DECREF`, so almost any operation is potentially dangerous."
568
610
msgstr ""
611
+ "No entanto, uma armadilha comum é extrair um objeto de uma lista e mantê-lo "
612
+ "por um tempo, sem tomar uma nova referência. Alguma outra operação poderia "
613
+ "remover o objeto da lista, liberando essa referência e possivelmente "
614
+ "desalocando-o. O perigo real é que operações aparentemente inocentes podem "
615
+ "invocar código Python arbitrário que poderia fazer isso; existe um caminho "
616
+ "de código que permite que o controle flua de volta para o usuário a partir "
617
+ "de um :c:func:`Py_DECREF`, então quase qualquer operação é potencialmente "
618
+ "perigosa."
569
619
570
620
#: ../../c-api/intro.rst:371
571
621
msgid ""
@@ -576,6 +626,12 @@ msgid ""
576
626
"This leaves the caller with the responsibility to call :c:func:`Py_DECREF` "
577
627
"when they are done with the result; this soon becomes second nature."
578
628
msgstr ""
629
+ "Uma abordagem segura é sempre usar as operações genéricas (funções cujo nome "
630
+ "começa com ``PyObject_``, ``PyNumber_``, ``PySequence_`` ou ``PyMapping_``). "
631
+ "Essas operações sempre criam uma nova :term:`referência forte` (ou seja, "
632
+ "incrementam a contagem de referências) do objeto que retornam. Isso deixa o "
633
+ "chamador com a responsabilidade de chamar :c:func:`Py_DECREF` quando "
634
+ "terminar com o resultado; isso logo se torna uma segunda natureza."
579
635
580
636
#: ../../c-api/intro.rst:382
581
637
msgid "Reference Count Details"
@@ -597,6 +653,20 @@ msgid ""
597
653
"said to *borrow* the reference. Nothing needs to be done for a :term:"
598
654
"`borrowed reference`."
599
655
msgstr ""
656
+ "O comportamento da contagem de referências de funções na API C/Python é "
657
+ "melhor explicado em termos de *propriedade de referências*. A propriedade "
658
+ "pertence às referências, nunca aos objetos (os objetos não são possuídos: "
659
+ "eles são sempre compartilhados). \" Possuir uma referência\" significa ser "
660
+ "responsável por chamar Py_DECREF nela quando a referência não for mais "
661
+ "necessária. A propriedade também pode ser transferida, o que significa que o "
662
+ "código que recebe a propriedade da referência torna-se responsável por "
663
+ "eventualmente efetuar um liberando ela chamando :c:func:`Py_DECREF` ou :c:"
664
+ "func:`Py_XDECREF` quando não é mais necessário -- ou passando essa "
665
+ "responsabilidade (geralmente para o responsável pela chamada). Quando uma "
666
+ "função passa a propriedade de uma referência para seu chamador, diz-se que o "
667
+ "chamador recebe uma *nova* referência. Quando nenhuma propriedade é "
668
+ "transferida, diz-se que o chamador *toma emprestado* a referência. Nada "
669
+ "precisa ser feito para uma :term:`referência emprestada`."
600
670
601
671
#: ../../c-api/intro.rst:397
602
672
msgid ""
@@ -690,6 +760,13 @@ msgid ""
690
760
"For example, this function sets all items of a list (actually, any mutable "
691
761
"sequence) to a given item::"
692
762
msgstr ""
763
+ "É muito mais comum usar :c:func:`PyObject_SetItem` e amigos com itens cujas "
764
+ "referências você está apenas pegando emprestado, como argumentos que foram "
765
+ "passados para a função que você está escrevendo. Nesse caso, o comportamento "
766
+ "deles em relação às referências é muito mais são, já que você não precisa "
767
+ "tomar uma nova referência só para poder doá-la (\" mande-a ser roubada\" ). "
768
+ "Por exemplo, esta função define todos os itens de uma lista (na verdade, "
769
+ "qualquer sequência mutável) para um determinado item::"
693
770
694
771
#: ../../c-api/intro.rst:476
695
772
msgid ""
@@ -915,6 +992,11 @@ msgid ""
915
992
"following example function shows some error cleanup. First, to remind you "
916
993
"why you like Python, we show the equivalent Python code::"
917
994
msgstr ""
995
+ "Um exemplo simples de detecção de exceções e transmiti-las é mostrado no "
996
+ "exemplo :c:func:`!sum_sequence` acima. Acontece que este exemplo não precisa "
997
+ "limpar nenhuma referência de propriedade quando detecta um erro. A função de "
998
+ "exemplo a seguir mostra alguma limpeza de erro. Primeiro, para lembrar por "
999
+ "que você gosta de Python, mostramos o código Python equivalente::"
918
1000
919
1001
#: ../../c-api/intro.rst:664
920
1002
msgid "Here is the corresponding C code, in all its glory::"
@@ -1108,6 +1190,13 @@ msgid ""
1108
1190
"macro:`!Py_DEBUG` is enabled in the Unix build, compiler optimization is "
1109
1191
"disabled."
1110
1192
msgstr ""
1193
+ "Compilar o interpretador com a macro :c:macro:`!Py_DEBUG` definida produz o "
1194
+ "que geralmente se entende por :ref:`uma construção de depuração do Python "
1195
+ "<debug-build>`. :c:macro:`!Py_DEBUG` é habilitada na construção Unix "
1196
+ "adicionando :option:`--with-pydebug` ao comando :file:`./configure`. Também "
1197
+ "está implícito na presença da macro não específica do Python :c:macro:`!"
1198
+ "_DEBUG`. Quando :c:macro:`!Py_DEBUG` está habilitado na construção do Unix, "
1199
+ "a otimização do compilador é desabilitada."
1111
1200
1112
1201
#: ../../c-api/intro.rst:825
1113
1202
msgid ""
@@ -1153,71 +1242,71 @@ msgstr "tipo"
1153
1242
1154
1243
#: ../../c-api/intro.rst:327
1155
1244
msgid "Py_INCREF (C function)"
1156
- msgstr ""
1245
+ msgstr "Py_INCREF (função C) "
1157
1246
1158
1247
#: ../../c-api/intro.rst:327
1159
1248
msgid "Py_DECREF (C function)"
1160
- msgstr ""
1249
+ msgstr "Py_DECREF (função C) "
1161
1250
1162
1251
#: ../../c-api/intro.rst:403
1163
1252
msgid "PyList_SetItem (C function)"
1164
- msgstr ""
1253
+ msgstr "PyList_SetItem (função C) "
1165
1254
1166
1255
#: ../../c-api/intro.rst:403
1167
1256
msgid "PyTuple_SetItem (C function)"
1168
- msgstr ""
1257
+ msgstr "PyTuple_SetItem (função C) "
1169
1258
1170
1259
#: ../../c-api/intro.rst:474
1171
1260
msgid "set_all()"
1172
- msgstr ""
1261
+ msgstr "set_all() "
1173
1262
1174
1263
#: ../../c-api/intro.rst:493
1175
1264
msgid "PyList_GetItem (C function)"
1176
- msgstr ""
1265
+ msgstr "PyList_GetItem (função C) "
1177
1266
1178
1267
#: ../../c-api/intro.rst:493
1179
1268
msgid "PySequence_GetItem (C function)"
1180
- msgstr ""
1269
+ msgstr "PySequence_GetItem (função C) "
1181
1270
1182
1271
#: ../../c-api/intro.rst:523
1183
1272
msgid "sum_list()"
1184
- msgstr ""
1273
+ msgstr "sum_list() "
1185
1274
1186
1275
#: ../../c-api/intro.rst:555 ../../c-api/intro.rst:647
1187
1276
msgid "sum_sequence()"
1188
- msgstr ""
1277
+ msgstr "sum_sequence() "
1189
1278
1190
1279
#: ../../c-api/intro.rst:590
1191
1280
msgid "PyErr_Occurred (C function)"
1192
- msgstr ""
1281
+ msgstr "PyErr_Occurred (função C) "
1193
1282
1194
1283
#: ../../c-api/intro.rst:603
1195
1284
msgid "PyErr_SetString (C function)"
1196
- msgstr ""
1285
+ msgstr "PyErr_SetString (função C) "
1197
1286
1198
1287
#: ../../c-api/intro.rst:603 ../../c-api/intro.rst:711
1199
1288
msgid "PyErr_Clear (C function)"
1200
- msgstr ""
1289
+ msgstr "PyErr_Clear (função C) "
1201
1290
1202
1291
#: ../../c-api/intro.rst:627
1203
1292
msgid "exc_info (in module sys)"
1204
1293
msgstr "exc_info (no módulo sys)"
1205
1294
1206
1295
#: ../../c-api/intro.rst:662 ../../c-api/intro.rst:709
1207
1296
msgid "incr_item()"
1208
- msgstr ""
1297
+ msgstr "incr_item() "
1209
1298
1210
1299
#: ../../c-api/intro.rst:711
1211
1300
msgid "PyErr_ExceptionMatches (C function)"
1212
- msgstr ""
1301
+ msgstr "PyErr_ExceptionMatches (função C) "
1213
1302
1214
1303
#: ../../c-api/intro.rst:711
1215
1304
msgid "Py_XDECREF (C function)"
1216
- msgstr ""
1305
+ msgstr "Py_XDECREF (função C) "
1217
1306
1218
1307
#: ../../c-api/intro.rst:737
1219
1308
msgid "Py_Initialize (C function)"
1220
- msgstr ""
1309
+ msgstr "Py_Initialize (função C) "
1221
1310
1222
1311
#: ../../c-api/intro.rst:737
1223
1312
msgid "module"
@@ -1245,28 +1334,28 @@ msgstr "caminho"
1245
1334
1246
1335
#: ../../c-api/intro.rst:737
1247
1336
msgid "path (in module sys)"
1248
- msgstr ""
1337
+ msgstr "path (no módulo sys) "
1249
1338
1250
1339
#: ../../c-api/intro.rst:772
1251
1340
msgid "Py_SetProgramName (C function)"
1252
1341
msgstr ""
1253
1342
1254
1343
#: ../../c-api/intro.rst:772
1255
1344
msgid "Py_GetPath (C function)"
1256
- msgstr ""
1345
+ msgstr "Py_GetPath (função C) "
1257
1346
1258
1347
#: ../../c-api/intro.rst:772
1259
1348
msgid "Py_GetPrefix (C function)"
1260
- msgstr ""
1349
+ msgstr "Py_GetPrefix (função C) "
1261
1350
1262
1351
#: ../../c-api/intro.rst:772
1263
1352
msgid "Py_GetExecPrefix (C function)"
1264
- msgstr ""
1353
+ msgstr "Py_GetExecPrefix (função C) "
1265
1354
1266
1355
#: ../../c-api/intro.rst:772
1267
1356
msgid "Py_GetProgramFullPath (C function)"
1268
- msgstr ""
1357
+ msgstr "Py_GetProgramFullPath (função C) "
1269
1358
1270
1359
#: ../../c-api/intro.rst:787
1271
1360
msgid "Py_IsInitialized (C function)"
1272
- msgstr ""
1361
+ msgstr "Py_IsInitialized (função C) "
0 commit comments