Skip to content

Commit eae907b

Browse files
committed
cap17: wip
1 parent 1abe0fd commit eae907b

File tree

1 file changed

+19
-20
lines changed

1 file changed

+19
-20
lines changed

online/cap17.adoc

Lines changed: 19 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ A iteração((("iterators", "role of"))) é fundamental para o processamento de
2424
dados: programas aplicam computações sobre séries de dados, de pixels a
2525
nucleotídeos. Se os dados não cabem na memória, precisamos buscar esses itens de
2626
forma _preguiçosa_—um de cada vez e sob demanda. É isso que um iterador faz.
27-
Este capítulo mostra como o padrão de projeto _Iterator_ ("Iterador") está
27+
Este capítulo mostra como o padrão de projeto _Iterator_ (Iterador) está
2828
embutido na linguagem Python, de modo que nunca será necessário programá-lo
2929
manualmente.
3030

@@ -54,7 +54,7 @@ ou por uma expressão geradora
5454

5555
* Usando expressões `yield from` para combinar geradores
5656

57-
* Porque geradores e corrotinas clássicas se parecem, mas são usadas de formas
57+
* Porque geradores e corrotinas clássicas se parecem, mas são usados de formas
5858
muito diferentes e não devem ser misturadas
5959

6060

@@ -90,8 +90,8 @@ o protocolo de sequência e será iterável, pois todas as sequências são
9090
iteráveis—como sabemos desde o <<ch_data_model>>. Agora veremos exatamente
9191
porque isso acontece.
9292

93-
O <<ex_sentence0>> mostra uma classe `Sentence` que extrai palavras de um texto
94-
por índice.
93+
O <<ex_sentence0>> mostra uma classe `Sentence` que permite
94+
ler as palavras de um texto por índice.
9595

9696
[[ex_sentence0]]
9797
.sentence.py: `Sentence` como uma sequência de palavras
@@ -143,7 +143,7 @@ said
143143

144144
<1> Uma sentença criada a partir de uma string.
145145

146-
<2> Observe a saída de `+__repr__+` gerada por `reprlib.repr`, usando `\...`.
146+
<2> Observe a saída de `+__repr__+` gerada por `reprlib.repr`, usando `'\...'`.
147147

148148
<3> Instâncias de `Sentence` são iteráveis; veremos a razão em seguida.
149149

@@ -174,7 +174,7 @@ startref="seqpro17")))
174174

175175
Para((("functions", "iter() function")))((("iterators", "iter() function",
176176
id="Iinterfun17")))((("iter() function", id="iterfunc17")))
177-
iterar sobre um objeto `x`, o interpretador Python `iter(x)`.
177+
iterar sobre um objeto `x`, o interpretador Python invoca `iter(x)`.
178178

179179
A função embutida `iter`:
180180

@@ -190,10 +190,9 @@ not iterable` ("objeto 'C' não é iterável"), onde `C` é a classe do objeto a
190190
Por isso todas as sequências de Python são iteráveis: por definição, todas
191191
implementam `+__getitem__+`. Na verdade, todas as sequências padrão também
192192
implementam `+__iter__+`, e as classes de sequências que você criar também devem
193-
implementar esse método. A iteração via `+__getitem__+` existe para
194-
manter a compatibilidade retroativa, e pode desaparecer em algum momento—apesar
195-
dela não ter sido descontinuada no Python 3.10, e eu duvidar que vá ser removida
196-
algum dia.
193+
implementar este método. A iteração automática via `+__getitem__+` existe para
194+
manter a compatibilidade retroativa, e pode desaparecer em algum momento—mas
195+
eu duvido que será removida no futuro.
197196

198197
Como mencionado na <<python_digs_seq_sec>>, esta é uma forma extrema de tipagem pato:
199198
um objeto é considerado iterável não apenas quando implementa o método
@@ -259,19 +258,19 @@ considera tal método.
259258

260259
Verificar explicitamente se um objeto é iterável pode não valer a pena, se você
261260
for iterar sobre o objeto logo após a checagem. Afinal, quando se tenta iterar
262-
sobre um não-iterável, a exceção gerada pelo Python é bastante clara:
261+
sobre um não-iterável, a exceção gerada pelo Python é bem explícita:
263262
`TypeError: 'C' object is not iterable` (TypeError: o objeto 'C' não é
264-
iterável). Se você puder fazer algo mais além de gerar um `TypeError`, então
263+
iterável). Se você quiser fazer algo além de gerar um `TypeError`, então
265264
faça isso em um bloco `try/except` ao invés de realizar uma checagem explícita.
266265
A checagem explícita pode fazer sentido se você estiver guardando o objeto para
267-
iterar sobre ele mais tarde; neste caso, falhar logo facilita o diagnóstico de falhas.
266+
iterar sobre ele mais tarde; neste caso, falhar logo facilita o diagnóstico de erros.
268267

269268
A função embutida `iter()` é usada mais frequentemente pelo Python que no nosso
270269
código. Há uma segunda maneira de usá-la, mas não é muito conhecida.
271270

272271

273272
[[iter_closer_look_sec]]
274-
==== Usando iter com um invocável
273+
==== Usando `iter` com um invocável
275274

276275
Podemos((("objects", "callable objects", id="Oiter17")))((("callable objects",
277276
"using iter() with", id="COiter17"))) chamar `iter()` com dois argumentos, para
@@ -282,8 +281,8 @@ https://fpy.li/17-2[«sentinel value»] (valor sentinela): um valor que, quando
282281
pelo invocável, faz o iterador gerar um `StopIteration` ao invés de produzir o
283282
valor sentinela.
284283

285-
O exemplo a seguir mostra como usar `iter` para rolar um dado de seis faces até
286-
que o valor `1` seja sorteado:
284+
O exemplo a seguir mostra como usar `iter` para rolar um dado de seis faces
285+
enquanto o valor `1` não é sorteado:
287286

288287
[source, python]
289288
----
@@ -308,16 +307,16 @@ valor sentinela. Como é comum com iteradores, o objeto `d6_iter` se torna inút
308307
após ser exaurido. Para recomeçar, é necessário reconstruir o iterador,
309308
invocando novamente `iter()`.
310309

311-
A https://fpy.li/97[documentação de
312-
`iter`] inclui a seguinte explicação e código de exemplo:footnote:[NT:
310+
A https://fpy.li/97[«documentação de
311+
`iter`»] inclui a seguinte explicação e código de exemplo:footnote:[NT:
313312
Mudei um pouco a tradução, e
314313
https://fpy.li/98[«sugeri a melhoria»] no
315314
repositório oficial da tradução PT-BR da documentação do Python.]
316315

317316
[quote]
318317
____
319318
320-
Uma aplicação útil da segunda forma de `iter()` é para construir um
319+
Uma aplicação útil da segunda forma de `iter()` é construir um
321320
leitor bloco-a-bloco (_block reader_).
322321
Por exemplo, ler blocos de 64 bytes do arquivo binário de um de banco de dados
323322
até que o final do arquivo seja atingido:
@@ -356,7 +355,7 @@ definição:
356355

357356
iterável:: Qualquer objeto a partir do qual a função embutida `iter` consegue
358357
obter um iterador. Objetos que implementam um método `+__iter__+` devolvendo um
359-
_iterador_ são iteráveis. Sequências são sempre iteráveis, bem como objetos que
358+
iterador são iteráveis. Sequências são sempre iteráveis, bem como objetos que
360359
implementam um método `+__getitem__+` que aceite índices iniciando em 0.
361360

362361
É importante deixar clara a relação entre iteráveis e iteradores: Python obtém

0 commit comments

Comments
 (0)