Skip to content

Commit fbe502b

Browse files
committed
uniformizar terminologia: loop->laço
1 parent 7d4ce6e commit fbe502b

File tree

18 files changed

+163
-154
lines changed

18 files changed

+163
-154
lines changed

guia-de-estilo.adoc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,7 @@ Termo em inglês adotado::
166166
|❗ _in place_ | ✅ internamente, interno | 🔎 no mesmo lugar
167167
|❗ _keyword argument_ | ✅ argumento nomeado | 🔎 argumento de palavra-chave
168168
|❗ _lock_ | ✅ trava |
169+
|❗ _loop_ | ✅ laço | ex: laço `for`, laço de eventos, laço infinito
169170
|❗ _match_ (s.m.) | ✅ casamento | substantivo; aplica-se a `match/case` e `re.match`
170171
|❗ _match_ (v.) | ✅ casar | verbo; aplica-se a `match/case` e `re.match`
171172
|✅ MRO (s.m.) | Ordem de Resolução de Métodos (_Method Resolution Order_)

links/FPY.LI.htaccess

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1370,6 +1370,7 @@ RedirectTemp /93 https://pythonfluente.com/2/#ex_strkeydict
13701370
RedirectTemp /94 https://pythonfluente.com/2/#ex_tcp_mojifinder_main
13711371
RedirectTemp /95 https://pythonfluente.com/2/#ex_checked_class_top
13721372
RedirectTemp /96 https://pythonfluente.com/2/#ex_primes_procs_top
1373+
13731374
# cap 17: appended 2026-01-09 15:15:31
13741375
RedirectTemp /97 https://docs.python.org/pt-br/3.10/library/functions.html#iter
13751376
RedirectTemp /98 https://github.com/python/python-docs-pt-br/issues/290
@@ -1387,6 +1388,7 @@ RedirectTemp /9k https://github.com/fluentpython/language-creators
13871388
RedirectTemp /9m https://docs.python.org/pt-br/3/library/exceptions.html#StopIteration
13881389
RedirectTemp /9n https://docs.python.org/pt-br/3/reference/expressions.html#yield-expressions
13891390
RedirectTemp /9p https://docs.python.org/pt-br/3/reference/index.html
1391+
13901392
# cap18: appended 2026-01-09 15:36:28
13911393
RedirectTemp /9q https://docs.python.org/pt-br/3/library/threading.html#using-locks-conditions-and-semaphores-in-the-with-statement
13921394
RedirectTemp /9r https://docs.python.org/pt-br/3/library/decimal.html#decimal.localcontext
@@ -1400,6 +1402,7 @@ RedirectTemp /9z https://docs.python.org/pt-br/3/library/stdtypes.html#typeconte
14001402
RedirectTemp /a2 https://pt.wikipedia.org/wiki/Recursividade_(ci%C3%AAncia_da_computa%C3%A7%C3%A3o)#Fun%C3%A7%C3%B5es_recursivas_em_cauda
14011403
RedirectTemp /a3 https://docs.python.org/3/library/sqlite3.html#using-the-connection-as-a-context-manager
14021404
RedirectTemp /a4 https://docs.python.org/pt-br/3/reference/datamodel.html#with-statement-context-managers
1405+
14031406
# cap19: appended 2026-01-09 15:48:37
14041407
RedirectTemp /a5 https://docs.python.org/pt-br/3/library/sys.html#sys.getswitchinterval
14051408
RedirectTemp /a6 https://pt.wikipedia.org/wiki/Chamada_de_sistema
@@ -1459,6 +1462,7 @@ RedirectTemp /bq https://pt.wikipedia.org/wiki/Mutex_recursivo
14591462
RedirectTemp /br https://docs.python.org/pt-br/3/reference/datamodel.html#customizing-attribute-access
14601463
RedirectTemp /bs https://docs.python.org/pt-br/3/reference/datamodel.html#special-method-lookup
14611464
RedirectTemp /bt https://docs.python.org/pt-br/3/library/stdtypes.html#special-attributes
1465+
14621466
# cap23: appended 2026-01-09 16:32:34
14631467
RedirectTemp /bv https://docs.python.org/pt-br/3/howto/descriptor.html
14641468
RedirectTemp /bw https://docs.python.org/pt-br/3/howto/

online/cap02.adoc

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ Qualquer um que saiba um pouco de Python consegue ler o <<ex_build_list>>.
204204
Entretanto, após aprender sobre as listcomps, acho o <<ex_listcomp0>> mais legível,
205205
porque deixa sua intenção explícita.
206206

207-
Um loop `for` pode ser usado para muitas coisas diferentes:
207+
Um laço `for` pode ser usado para muitas coisas diferentes:
208208
percorrer uma sequência para contar ou encontrar itens, computar valores agregados (somas, médias),
209209
ou inúmeras outras tarefas.
210210
O código no <<ex_build_list>> está criando uma lista.
@@ -216,7 +216,7 @@ Já vi código Python usando listcomps apenas para repetir um bloco de código p
216216
Se você não vai fazer alguma coisa com a lista criada, não deveria usar essa sintaxe.
217217
Além disso, tente manter o código curto.
218218
Se uma compreensão ocupa mais de duas linhas,
219-
provavelmente seria melhor quebrá-la ou reescrevê-la como um bom e velho loop `for`.
219+
provavelmente seria melhor quebrá-la ou reescrevê-la como um bom e velho laço `for`.
220220
Avalie qual o melhor caminho: em Python, como em português, não existem regras absolutas para se escrever bem.
221221

222222

@@ -361,7 +361,7 @@ O resultado tem seis itens.
361361
----
362362
====
363363
<1> Isso gera uma lista de tuplas ordenadas por cor, depois por tamanho.
364-
<2> Observe que a lista resultante é ordenada como se os loops `for`
364+
<2> Observe que a lista resultante é ordenada como se os laços `for`
365365
estivessem aninhados na mesma ordem que eles aparecem na listcomp.
366366
<3> Para ter os itens ordenados por tamanho e então por cor, apenas rearranje as cláusulas `for`;
367367
quebrar a listcomp em duas linhas torna mais fácil ver como o resultado será ordenado.
@@ -421,10 +421,10 @@ O <<ex_genexp_cartesian>> usa uma genexp com um produto cartesiano para
421421
gerar uma relação de camisetas de duas cores em três tamanhos.
422422
Diferente do <<ex_listcomp_cartesian>>,
423423
aquela lista de camisetas com seis itens nunca é criada na memória:
424-
a expressão geradora alimenta o loop `for` produzindo um item por vez.
424+
a expressão geradora alimenta o laço `for` produzindo um item por vez.
425425
Se as duas listas usadas no produto cartesiano tivessem mil itens cada uma,
426426
usar uma função geradora evitaria o custo de construir uma lista
427-
com um milhão de itens apenas para passar ao loop `for`.
427+
com um milhão de itens apenas para passar ao laço `for`.
428428

429429
[[ex_genexp_cartesian]]
430430
.Produto cartesiano em uma expressão geradora
@@ -1390,7 +1390,7 @@ porque eles permitem que você atribua nomes às fatias, da mesma forma que plan
13901390

13911391
Suponha que você precise analisar um arquivo de dados como a fatura mostrada na <<flat_file_invoice>>.
13921392
Em vez de encher seu código de fatias explícitas fixas, você pode nomeá-las.
1393-
Veja como isso torna legível o loop `for` no final do exemplo.
1393+
Veja como isso torna legível o laço `for` no final do exemplo.
13941394

13951395
[[flat_file_invoice]]
13961396
.Itens de um arquivo tabular de fatura
@@ -1681,7 +1681,7 @@ Veja uma demonstração de `*=` com uma sequência mutável e depois com uma seq
16811681
A concatenação repetida de sequências imutáveis é ineficiente, pois ao invés de apenas acrescentar novos itens,
16821682
o interpretador tem que copiar toda a sequência alvo para criar um novo objeto com os novos itens
16831683
concatenados.footnote:[`str` é uma exceção a essa descrição.
1684-
Como criar strings com `+=` em loops é tão comum em bases de código reais,
1684+
Como criar strings com `+=` em laços é tão comum em bases de código reais,
16851685
o CPython foi otimizado para esse caso de uso.
16861686
Instâncias de `str` são alocadas na memória com espaço extra,
16871687
então a concatenação não exige a cópia da string inteira a cada operação.]
@@ -2548,7 +2548,7 @@ https://fpy.li/2-30[Python for Data Analysis], de Wes McKinney.
25482548
"A Numpy é toda sobre vetorização". Essa é a frase de abertura do livro de acesso aberto
25492549
https://fpy.li/2-31[From Python to NumPy], de Nicolas P. Rougier.
25502550
Operações vetorizadas aplicam funções matemáticas a todos os elementos de um array
2551-
sem um loop explícito escrito em Python.
2551+
sem um laço explícito escrito em Python.
25522552
Elas podem operar em paralelo, usando instruções especiais de vetor presentes em CPUs modernas,
25532553
tirando proveito de múltiplos núcleos ou delegando para a GPU, dependendo da biblioteca.
25542554
O primeiro exemplo no livro de Rougier mostra um aumento de velocidade de 500 vezes,

online/cap03.adoc

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ os conjuntos que você pode ter encontrado em outras linguagens populares.
2525
Em especial, os conjuntos de Python implementam todas as operações fundamentais da teoria dos conjuntos,
2626
como união, interseção, testes de subconjuntos, etc.
2727
Com eles, podemos expressar algoritmos de forma mais declarativa,
28-
evitando o excesso de loops e condicionais aninhados.
28+
evitando o excesso de laços e condicionais aninhados.
2929

3030
Aqui está um breve esquema do capítulo:
3131

@@ -1206,7 +1206,7 @@ Assim, dados dois conjuntos `a` e `b`, `a | b` devolve sua união,
12061206
Quando bem utilizadas,
12071207
as operações de conjuntos podem reduzir tanto a contagem de linhas quanto o tempo de execução de programas Python,
12081208
ao mesmo tempo em que tornam o código mais legível e
1209-
mais fácil de entender—pela remoção de loops e lógica condicional.
1209+
mais fácil de entender—pela remoção de laços e lógica condicional.
12101210

12111211
Por exemplo, imagine que você tem um grande conjunto de endereços de e-mail (o "palheiro"—`haystack`)
12121212
e um conjunto menor de endereços (as "agulhas"—`needles``),
@@ -1550,7 +1550,7 @@ Por outro lado, uma view devolvida por `dict_keys` sempre pode ser usada como um
15501550
pois todas as chaves são hashable—por definição.
15511551
====
15521552

1553-
Usar operações de conjunto com views pode evitar a necessidade de muitos loops e ifs
1553+
Usar operações de conjunto com views pode evitar a necessidade de muitos laços e ifs
15541554
quando seu código precisa inspecionar o conteúdo de dicionários.
15551555
Deixe a eficiente implementação de Python em C trabalhar para você!
15561556

online/cap04.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1602,7 +1602,7 @@ No <<ex_cfpy>>, observe que o comando `if`, na função `find`,
16021602
usa o método `.issubset()` para testar rapidamente se
16031603
todas as palavras no conjunto `query` aparecem na lista de palavras criada a partir do nome do caractere.
16041604
Graças à rica API de conjuntos de Python,
1605-
não precisamos de um loop `for` aninhado e de outro `if` para implementar essa verificação
1605+
não precisamos de um laço `for` aninhado e de outro `if` para implementar essa verificação
16061606

16071607
[[ex_cfpy]]
16081608
.cf.py: o utilitário de busca de caracteres

online/cap06.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -563,7 +563,7 @@ então seu atributo `passengers` se refere a outra lista.
563563

564564
Em geral, criar cópias profundas não é uma questão simples.
565565
Objetos podem conter referências cíclicas que fariam um algoritmo
566-
ingênuo entrar em um loop infinito.
566+
ingênuo entrar em um laço infinito.
567567
A função `deepcopy` memoriza os objetos já copiados,
568568
e trata referências cíclicas corretamente.
569569
Isso é demonstrado no <<ex_cycle1>>.

online/cap12.adoc

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -715,7 +715,7 @@ Veja como `reduce` pode ser usada para computar `5!` (o fatorial de 5):
715715

716716
Voltando a nosso problema de _hash_, o <<ex_reduce_xor>> demonstra a ideia da
717717
computação de um xor agregado, fazendo isso de três formas diferente: com um
718-
loop `for` e com dois modos diferentes de usar `reduce`.
718+
laço `for` e com dois modos diferentes de usar `reduce`.
719719

720720
[[ex_reduce_xor]]
721721
.Três maneiras de calcular o xor acumulado de inteiros de 0 a 5
@@ -736,12 +736,12 @@ loop `for` e com dois modos diferentes de usar `reduce`.
736736
1
737737
----
738738
====
739-
<1> xor agregado com um loop `for` e uma variável de acumulação.
739+
<1> xor agregado com um laço `for` e uma variável de acumulação.
740740
<2> `functools.reduce` usando uma função anônima.
741741
<3> `functools.reduce` substituindo a `lambda` customizada por `operator.xor`.
742742

743743
Das alternativas apresentadas no <<ex_reduce_xor>>, a última é minha favorita, e
744-
o loop `for` vem a seguir. Qual sua preferida?
744+
o laço `for` vem a seguir. Qual sua preferida?
745745

746746
Como visto na <<operator_module_sec>>, `operator` oferece a funcionalidade de
747747
todos os operadores infixos de Python em formato de função, diminuindo a
@@ -796,7 +796,7 @@ Ao usar `reduce`, é uma boa prática fornecer o terceiro argumento,
796796
("reduce() de uma sequência vazia sem valor inicial", uma mensagem bem escrita:
797797
explica o problema e diz como resolvê-lo).
798798
O `initializer` é o valor devolvido se a sequência for vazia e
799-
é usado como primeiro argumento no loop de redução,
799+
é usado como primeiro argumento no laço de redução,
800800
e portanto deve ser o elemento neutro da operação.
801801
Assim, o `initializer` para `{plus}`, `|`, `^` (xor) deve ser `0`,
802802
mas para `*` e `&` deve ser `1`.
@@ -853,7 +853,7 @@ Mas não para grandes vetores multidimensionais. Uma forma melhor de comparar um
853853
`Vector` com outro `Vector` ou iterável seria o código do <<ex_eq_loop>>.
854854

855855
[[ex_eq_loop]]
856-
.A implementação de `+Vector.__eq__+` usando `zip` em um loop `for`, para uma comparação mais eficiente
856+
.A implementação de `+Vector.__eq__+` usando `zip` em um laço `for`, para uma comparação mais eficiente
857857
====
858858
[source, python]
859859
----
@@ -895,7 +895,7 @@ um dos argumentos é consumido.
895895
Veja a caixa <<zip_box>> logo adiante para saber mais sobre zip.
896896
====
897897

898-
O <<ex_eq_loop>> é eficiente, mas a função `all` pode produzir a mesma computação de um agregado do loop `for` em apenas uma linha:
898+
O <<ex_eq_loop>> é eficiente, mas a função `all` pode produzir a mesma computação de um agregado do laço `for` em apenas uma linha:
899899
se todas as comparações entre componentes correspoendentes nos operandos forem `True`, o resultado é `True`.
900900
Assim que uma comparação é `False`, `all` devolve `False`. O <<ex_eq_all>> mostra um `+__eq__+` usando `all`.
901901

@@ -922,7 +922,7 @@ startref="SSMhasheq12")))((("", startref="VCMhasheq12")))
922922
.O fantástico zip
923923
****
924924
925-
Ter um loop `for` que itera sobre itens sem perder tempo com variáveis de índice
925+
Ter um laço `for` que itera sobre itens sem perder tempo com variáveis de índice
926926
é muito bom e evita muitos bugs, mas exige algumas funções utilitárias
927927
especiais. Uma delas é a função embutida `zip`, que facilita a iteração em
928928
paralelo sobre dois ou mais iteráveis, devolvendo tuplas que você pode
@@ -972,7 +972,7 @@ Se você quiser entender `zip`, passe algum tempo considerando como esses
972972
exemplos funcionam.
973973
974974
A função embutida `enumerate` é outra função geradora usada com frequência em
975-
loops `for`, para evitar manipulação direta de variáveis índice. Quem não
975+
laços `for`, para evitar manipulação direta de variáveis índice. Quem não
976976
estiver familiarizado com `enumerate` deve estudar a seção dedicada a ela na
977977
documentação das
978978
https://fpy.li/6d[Funções embutidas].
@@ -1371,7 +1371,7 @@ de David Eppstein sobre ele:
13711371
____
13721372
13731373
Se você quer a soma de uma lista de itens, deveria escrever algo como
1374-
"a soma de uma lista de itens", não como "faça um loop sobre
1374+
"a soma de uma lista de itens", não como "faça um laço sobre
13751375
esses itens, mantenha uma variável `ac`, execute uma série de somas".
13761376
Por que temos linguagens de alto nível, senão para expressar nossas
13771377
intenções em um nível mais alto e deixar a linguagem se preocupar

online/cap17.adoc

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -872,14 +872,18 @@ função geradora do módulo `re`.
872872

873873
==== Sentence versão #4: um gerador preguiçoso
874874

875-
A interface `Iterator` foi projetada para ser preguiçosa: `next(my_iterator)` produz um item por vez.
876-
O oposto de preguiçosa é ávida: avaliação preguiçosa e ávida são termos técnicos da teoria das linguagens de programação.footnote:[NT: Os termos em inglês são _lazy_ (preguiçosa) e _eager_ (ávida). Em português essas traduções aparecem, mas a literatura usa também avaliação _estrita_ e avaliação _não estrita_. Optamos pelos termos "preguiçosa" e "ávida", que parecem mais claros.]
875+
A interface `Iterator` foi projetada para ser preguiçosa: `next(my_iterator)`
876+
produz um item por vez. O oposto de preguiçosa é ávida: avaliação preguiçosa
877+
(_lazy evaluation_) e ávida (_eager evaluation_) são termos técnicos da teoria
878+
das linguagens de programação.footnote:[NT: Em português a
879+
literatura usa também avaliação _estrita_ e _não estrita_.
880+
Optamos pelos termos "preguiçosa" e "ávida", que parecem mais claros.]
877881

878882
////
879883
parei aqui em 23/dez, 19:20
880884
881885
TODO: trocar "loop" por "laço" ao longo do livro, começando por
882-
"loop `for`" -> "laço `for`"
886+
"laço `for`" -> "laço `for`"
883887
"loop infinito" -> "laço infito".
884888
885889
////

0 commit comments

Comments
 (0)