Skip to content

Commit e5d1759

Browse files
committed
pequenas correções
1 parent 6f382fe commit e5d1759

File tree

1 file changed

+15
-7
lines changed

1 file changed

+15
-7
lines changed

capitulos/cap18.adoc

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1069,18 +1069,26 @@ Aqui estão as regras:
10691069

10701070
`while`:: O bloco `else` será executado apenas se e quando o loop `while` terminar pela condição se tornar _falsa_ (novamente, não rodará se o `while` for interrompido por um `break`)
10711071

1072-
`try`:: O bloco `else`` será executado apenas se nenhuma exceção for gerada no bloco `try`. A https://docs.python.org/pt-br/3/reference/compound_stmts.html[documentação oficial] também afirma: "Exceções na cláusula `else` não são tratadas pela cláusula `except` precedente."
1072+
`try`:: O bloco `else` será executado apenas se nenhuma exceção for gerada no bloco `try`. A https://docs.python.org/pt-br/3/reference/compound_stmts.html[documentação oficial] também afirma: "Exceções na cláusula `else` não são tratadas pela cláusula `except` precedente."
10731073

10741074
Em todos os casos, a cláusula `else` também será ignorada se uma exceção ou uma instrução `return`, `break` ou `continue` fizer com que o fluxo de controle saia do bloco principal da instrução composta.
1075+
No caso do `try`, esta é a diferença importante entre `else` e `finally`:
1076+
o bloco `finally` será executado sempre, ocorrendo ou não uma exceção,
1077+
e até mesmo se o fluxo de execução sair do bloco `try` por uma instrução como `return`.
10751078

10761079
[NOTE]
10771080
====
1078-
Acho `else` uma escolha muito pobre de palavra reservada em todos os casos, exceto o `if`.
1079-
Ela implica em uma alternativa excludente, como em "Execute esse loop, caso contrário faça aquilo."
1080-
Mas a semântica para o `else` em loops é o oposto: "Execute esse loop, daí faça aquilo."
1081-
Isso sugere `then` como uma escolha melhor—que também faria sentido no contexto de um `try`:
1081+
Não tenho nada contra o funcionamento dessas cláusulas `else`,
1082+
mas do ponto de vista do design da linguagem,
1083+
a palavra `else` foi uma escolha infeliz;
1084+
`else` implica em uma alternativa excludente,
1085+
como em "Execute esse loop, caso contrário faça aquilo."
1086+
Mas a semântica do `else` em loops é o oposto: "Execute esse loop, então faça aquilo."
1087+
Isso sugere que `then` ("então") seria uma escolha melhor.
1088+
Também faria sentido no contexto de um `try`:
10821089
"Tente isso, então faça aquilo."
1083-
Entretanto, acrescentar uma palavra reservada é uma ruptura séria em uma linguagem—uma decisão muito difícil.
1090+
Entretanto, acrescentar uma nova palavra reservada é uma ruptura séria em uma linguagem—uma decisão muito difícil.
1091+
Guido sempre foi econômico com palavras reservadas.
10841092
====
10851093

10861094
Usar `else` com essas instruções muitas vezes torna o código mais fácil de ler e evita o transtorno de configurar flags de controle ou acrescentar instruções `if` extras ao código.
@@ -1165,7 +1173,7 @@ No fim, _lys.py_ se tornou um instrumento para explorarmos muito mais que _patte
11651173
[[further_reading_context_sec]]
11661174
=== Para saber mais
11671175

1168-
O https://docs.python.org/pt-br/3/reference/compound_stmts.html[Capítulo 8, "Instruções Compostas,"] em((("with, match, and else blocks", "further reading on"))) _A Referência da Linguagem Python_ diz praticamente tudo que há para dizer sobre cláusulas `else` em instruções `if`, `for`, `while` e `try`. Sobre o uso pythônico de `try/except`, como ou sem `else`, Raymond Hettinger deu uma resposta brilhante para a pergunta https://fpy.li/18-31["Is it a good practice to use try-except-else in Python?" (_É uma boa prática usar try-except-else em Python?_)] (EN) no StackOverflow. O pass:[<a class="orm:hideurl" href="https://fpy.li/pynut3"><em>Python in a Nutshell</em></a>], 3rd ed., by Martelli et al., tem um capítulo sobre exceções com uma excelente discussão sobre o estilo EAFP, atribuindo à pioneira da computação Grace Hopper a criação da frase "É mais fácil pedir perdão que pedir permissão."
1176+
O https://docs.python.org/pt-br/3/reference/compound_stmts.html[Capítulo 8, "Instruções Compostas,"] em((("with, match, and else blocks", "further reading on"))) _A Referência da Linguagem Python_ diz praticamente tudo que há para dizer sobre cláusulas `else` em instruções `if`, `for`, `while` e `try`. Sobre o uso pythônico de `try/except`, com ou sem `else`, Raymond Hettinger deu uma resposta brilhante para a pergunta https://fpy.li/18-31["Is it a good practice to use try-except-else in Python?" (_É uma boa prática usar try-except-else em Python?_)] (EN) no StackOverflow. O pass:[<a class="orm:hideurl" href="https://fpy.li/pynut3"><em>Python in a Nutshell</em></a>], 3rd ed., by Martelli et al., tem um capítulo sobre exceções com uma excelente discussão sobre o estilo EAFP, atribuindo à pioneira da computação Grace Hopper a criação da frase "É mais fácil pedir perdão que pedir permissão."
11691177

11701178

11711179
O capítulo 4 de _A Biblioteca Padrão do Python_, "Tipos Embutidos", tem uma seção dedicada a https://docs.python.org/pt-br/3/library/stdtypes.html#typecontextmanager["Tipos de Gerenciador de Contexto"]. Os métodos especiais `+__enter__/__exit__+` também estão documentados em _A Referência da Linguagem Python_, em https://docs.python.org/pt-br/3/reference/datamodel.html#with-statement-context-managers["Gerenciadores de Contexto da Instrução with"].footnote:[NT:No momento em que essa tradução é feita, o título dessa seção na documentação diz "Com gerenciadores de contexto de instruções", uma frase que sequer faz sentido. Foi aberto um issue sobre isso.] Os gerenciadores de contexto foram introduzidos na https://fpy.li/pep343[PEP 343—The "with" Statement] (EN).

0 commit comments

Comments
 (0)