@@ -11,7 +11,7 @@ msgid ""
11
11
msgstr ""
12
12
"Project-Id-Version : Python 3.10\n "
13
13
"Report-Msgid-Bugs-To : \n "
14
- "POT-Creation-Date : 2025-05-02 16:07 +0000\n "
14
+ "POT-Creation-Date : 2025-06-06 16:52 +0000\n "
15
15
"PO-Revision-Date : 2022-11-05 17:21+0000\n "
16
16
"Last-Translator : Rafael Fontenelle <rffontenelle@gmail.com>, 2024\n "
17
17
"Language-Team : Portuguese (Brazil) (https://app.transifex.com/python-doc/ "
@@ -438,6 +438,17 @@ msgid ""
438
438
"objects that reference each other here; for now, the solution is \" don't do "
439
439
"that.\" )"
440
440
msgstr ""
441
+ "A contagem de referências é importante porque os computadores atuais têm um "
442
+ "tamanho de memória finito (e frequentemente severamente limitado); ela conta "
443
+ "quantos lugares diferentes existem que possuem uma :term:`referência forte` "
444
+ "a um objeto. Tal lugar pode ser outro objeto, ou uma variável C global (ou "
445
+ "estática), ou uma variável local em alguma função C. Quando a última :term:"
446
+ "`referência forte` a um objeto é liberada (ou seja, sua contagem de "
447
+ "referências se torna zero), o objeto é desalocado. Se ele contiver "
448
+ "referências a outros objetos, essas referências são liberadas. Esses outros "
449
+ "objetos podem ser desalocados por sua vez, se não houver mais referências a "
450
+ "eles, e assim por diante. (Há um problema óbvio com objetos que referenciam "
451
+ "uns aos outros aqui; por enquanto, a solução é \" não faça isso\" .)"
441
452
442
453
#: ../../c-api/intro.rst:272
443
454
msgid ""
@@ -457,6 +468,22 @@ msgid ""
457
468
"``sizeof(Py_ssize_t) >= sizeof(void*)``). Thus, the reference count "
458
469
"increment is a simple operation."
459
470
msgstr ""
471
+ "Contagens de referências são sempre manipuladas explicitamente. A maneira "
472
+ "normal é usar a macro :c:func:`Py_INCREF` para obter uma nova referência a "
473
+ "um objeto (ou seja, incrementar sua contagem de referências em um), e :c:"
474
+ "func:`Py_DECREF` para liberar essa referência (ou seja, decrementar a "
475
+ "contagem de referências em um). A macro :c:func:`Py_DECREF` é "
476
+ "consideravelmente mais complexa do que a incref, pois deve verificar se a "
477
+ "contagem de referências se torna zero e, em seguida, fazer com que o "
478
+ "desalocador do objeto seja chamado. O desalocador é um ponteiro para função "
479
+ "contido na estrutura de tipo do objeto. O desalocador específico do tipo "
480
+ "cuida da liberação de referências para outros objetos contidos no objeto se "
481
+ "este for um tipo de objeto composto, como uma lista, bem como de executar "
482
+ "qualquer finalização adicional necessária. Não há chance de a contagem de "
483
+ "referências transbordar; pelo menos tantos bits são usados para armazenar a "
484
+ "contagem de referência quantos forem os locais de memória distintos na "
485
+ "memória virtual (presumindo ``sizeof(Py_ssize_t) >= sizeof(void*)``). "
486
+ "Portanto, o incremento da contagem de referências é uma operação simples."
460
487
461
488
#: ../../c-api/intro.rst:288
462
489
msgid ""
@@ -475,6 +502,21 @@ msgid ""
475
502
"that are called from Python; the call mechanism guarantees to hold a "
476
503
"reference to every argument for the duration of the call."
477
504
msgstr ""
505
+ "Não é necessário manter uma :term:`referência forte` (ou seja, incrementar a "
506
+ "contagem de referências) para cada variável local que contém um ponteiro "
507
+ "para um objeto. Em teoria, a contagem de referências do objeto aumenta em um "
508
+ "quando a variável é feita para apontar para ele e diminui em um quando a "
509
+ "variável sai do escopo. No entanto, esses dois se cancelam, portanto, no "
510
+ "final, a contagem de referências não mudou. A única razão real para usar a "
511
+ "contagem de referências é evitar que o objeto seja desalocado enquanto nossa "
512
+ "variável estiver apontando para ele. Se sabemos que existe pelo menos uma "
513
+ "outra referência ao objeto que vive pelo menos tanto quanto nossa variável, "
514
+ "não há necessidade de tomar uma nova :term:`referência forte` (ou seja, "
515
+ "incrementar a contagem de referências) temporariamente. Uma situação "
516
+ "importante em que isso ocorre é em objetos que são passados como argumentos "
517
+ "para funções C em um módulo de extensão que são chamados de Python; o "
518
+ "mecanismo de chamada garante manter uma referência a todos os argumentos "
519
+ "durante a chamada."
478
520
479
521
#: ../../c-api/intro.rst:304
480
522
msgid ""
@@ -486,6 +528,14 @@ msgid ""
486
528
"code path which allows control to flow back to the user from a :c:func:"
487
529
"`Py_DECREF`, so almost any operation is potentially dangerous."
488
530
msgstr ""
531
+ "No entanto, uma armadilha comum é extrair um objeto de uma lista e mantê-lo "
532
+ "por um tempo, sem tomar uma nova referência. Alguma outra operação poderia "
533
+ "remover o objeto da lista, liberando essa referência e possivelmente "
534
+ "desalocando-o. O perigo real é que operações aparentemente inocentes podem "
535
+ "invocar código Python arbitrário que poderia fazer isso; existe um caminho "
536
+ "de código que permite que o controle flua de volta para o usuário a partir "
537
+ "de um :c:func:`Py_DECREF`, então quase qualquer operação é potencialmente "
538
+ "perigosa."
489
539
490
540
#: ../../c-api/intro.rst:312
491
541
msgid ""
@@ -496,6 +546,12 @@ msgid ""
496
546
"This leaves the caller with the responsibility to call :c:func:`Py_DECREF` "
497
547
"when they are done with the result; this soon becomes second nature."
498
548
msgstr ""
549
+ "Uma abordagem segura é sempre usar as operações genéricas (funções cujo nome "
550
+ "começa com ``PyObject_``, ``PyNumber_``, ``PySequence_`` ou ``PyMapping_``). "
551
+ "Essas operações sempre criam uma nova :term:`referência forte` (ou seja, "
552
+ "incrementam a contagem de referências) do objeto que retornam. Isso deixa o "
553
+ "chamador com a responsabilidade de chamar :c:func:`Py_DECREF` quando "
554
+ "terminar com o resultado; isso logo se torna uma segunda natureza."
499
555
500
556
#: ../../c-api/intro.rst:323
501
557
msgid "Reference Count Details"
@@ -517,6 +573,20 @@ msgid ""
517
573
"said to *borrow* the reference. Nothing needs to be done for a :term:"
518
574
"`borrowed reference`."
519
575
msgstr ""
576
+ "O comportamento da contagem de referências de funções na API C/Python é "
577
+ "melhor explicado em termos de *propriedade de referências*. A propriedade "
578
+ "pertence às referências, nunca aos objetos (os objetos não são possuídos: "
579
+ "eles são sempre compartilhados). \" Possuir uma referência\" significa ser "
580
+ "responsável por chamar Py_DECREF nela quando a referência não for mais "
581
+ "necessária. A propriedade também pode ser transferida, o que significa que o "
582
+ "código que recebe a propriedade da referência torna-se responsável por "
583
+ "eventualmente efetuar um liberando ela chamando :c:func:`Py_DECREF` ou :c:"
584
+ "func:`Py_XDECREF` quando não é mais necessário -- ou passando essa "
585
+ "responsabilidade (geralmente para o responsável pela chamada). Quando uma "
586
+ "função passa a propriedade de uma referência para seu chamador, diz-se que o "
587
+ "chamador recebe uma *nova* referência. Quando nenhuma propriedade é "
588
+ "transferida, diz-se que o chamador *toma emprestado* a referência. Nada "
589
+ "precisa ser feito para uma :term:`referência emprestada`."
520
590
521
591
#: ../../c-api/intro.rst:338
522
592
msgid ""
@@ -610,6 +680,13 @@ msgid ""
610
680
"For example, this function sets all items of a list (actually, any mutable "
611
681
"sequence) to a given item::"
612
682
msgstr ""
683
+ "É muito mais comum usar :c:func:`PyObject_SetItem` e amigos com itens cujas "
684
+ "referências você está apenas pegando emprestado, como argumentos que foram "
685
+ "passados para a função que você está escrevendo. Nesse caso, o comportamento "
686
+ "deles em relação às referências é muito mais são, já que você não precisa "
687
+ "tomar uma nova referência só para poder doá-la (\" mande-a ser roubada\" ). "
688
+ "Por exemplo, esta função define todos os itens de uma lista (na verdade, "
689
+ "qualquer sequência mutável) para um determinado item::"
613
690
614
691
#: ../../c-api/intro.rst:417
615
692
msgid ""
0 commit comments