Skip to content

Commit 25341ab

Browse files
authored
Merge pull request #85 from nizbel/typos-cap-3
Update cap03.adoc
2 parents 15e8af2 + 992bf06 commit 25341ab

File tree

1 file changed

+9
-9
lines changed

1 file changed

+9
-9
lines changed

capitulos/cap03.adoc

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -498,7 +498,7 @@ O <<ex_strkeydict0>> implementa a classe `StrKeyDict0`, que passa nos doctests a
498498

499499
[TIP]
500500
====
501-
Uma forma melhor de criar uma mapeamento definido pelo usuário é criar uma subclasse de `collections.UserDict` em vez de `dict` (como faremos no <<ex_strkeydict>>). Aqui criamos uma sibclasse de `dict` apenas para mostrar que `+__missing__+` é suportado pelo método embutido `+dict.__getitem__+`.
501+
Uma forma melhor de criar uma mapeamento definido pelo usuário é criar uma subclasse de `collections.UserDict` em vez de `dict` (como faremos no <<ex_strkeydict>>). Aqui criamos uma subclasse de `dict` apenas para mostrar que `+__missing__+` é suportado pelo método embutido `+dict.__getitem__+`.
502502
====
503503

504504
[[ex_strkeydict0]]
@@ -571,7 +571,7 @@ Veja
571571
https://fpy.li/3-7[_missing.py_]
572572
no repositório de exemplos de código para demonstrações dos cenários descritos acima.
573573

574-
Os quatro cenários que acabo de descrever supõe implementações mínimas.
574+
Os quatro cenários que acabo de descrever supõem implementações mínimas.
575575
Se a sua subclasse implementa `+__getitem__+`, `get`, e `+__contains__+`,
576576
então você pode ou não fazer tais métodos usarem `+__missing__+`, dependendo de suas necessidades.
577577
O ponto aqui é mostrar que é preciso ter cuidado ao criar subclasses dos mapeamentos da biblioteca padrão para usar `+__missing__+`, porque as classes base suportam comportamentos default diferentes.
@@ -788,7 +788,7 @@ mappingproxy({1: 'A', 2: 'B'})
788788

789789

790790
Isso pode ser usado assim na prática, no cenário da programação de hardware:
791-
o construtor em uma subcalsse concreta `Board` preencheria um mapeamento privado com os objetos porta, e o exporia aos clientes da API via um atributo público `.portas`, implementado como um `mappingproxy`.
791+
o construtor em uma subclasse concreta `Board` preencheria um mapeamento privado com os objetos porta, e o exporia aos clientes da API via um atributo público `.portas`, implementado como um `mappingproxy`.
792792
Dessa forma os clientes não poderiam acrescentar, remover ou modificar as portas por acidente.
793793

794794
A seguir veremos _views_—que permitem operações de alto desempenho em um `dict`, sem cópias desnecessárias dos dados.
@@ -969,7 +969,7 @@ Além do teste de existência extremamente rápido (graças à tabela de hash su
969969

970970
==== Sets literais
971971

972-
A((("sets", "set literals"))) sintaxe de literais `set`—`{1}`, `{1, 2}`, etc.—parece exatamente igual à notação matemática, mas tem uma importante exceção: não notação literal para o `set` vazio, então precisamos nos lembrar de escrever `set()`.
972+
A((("sets", "set literals"))) sintaxe de literais `set`—`{1}`, `{1, 2}`, etc.—parece exatamente igual à notação matemática, mas tem uma importante exceção: não notação literal para o `set` vazio, então precisamos nos lembrar de escrever `set()`.
973973

974974
.Peculiaridade sintática
975975
[WARNING]
@@ -1086,7 +1086,7 @@ image::images/flpy_0302.png[Diagrama de classe UML para `Set` e `MutableSet`]
10861086
| | `s \|= z`| `+s.__ior__(z)+` | `s` atualizado com a união de `s` e `z`
10871087
| | | `s.update(it, …)` | `s` atualizado com a união de `s` e todos os conjuntos construídos a partir de iteráveis `it`, etc.
10881088
||||
1089-
| S \ Z | `s - z` | `+s.__sub__(z)+` | Complemeto relativo ou diferença entre `s` e `z`
1089+
| S \ Z | `s - z` | `+s.__sub__(z)+` | Complemento relativo ou diferença entre `s` e `z`
10901090
| | `z - s` | `+s.__rsub__(z)+` | Operador `-` invertido
10911091
| | | `s.difference(it, …)` | Diferença entre `s` e todos os conjuntos construídos a partir de iteráveis `it`, etc.
10921092
| | `s -= z` | `+s.__isub__(z)+` | `s` atualizado com a diferença entre `s` e `z`
@@ -1209,7 +1209,7 @@ Por outro lado, uma view devolvida por `dict_keys` sempre pode ser usada como um
12091209
====
12101210

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

12141214
Com isso, encerramos esse capítulo.
12151215

@@ -1220,7 +1220,7 @@ Com isso, encerramos esse capítulo.
12201220
Dicionários((("dictionaries and sets", "overview of"))) são a pedra fundamental do Python.
12211221
Ao longo dos anos, a sintaxe literal familiar, `{k1: v1, k2: v2}`, foi aperfeiçoada para suportar desempacotamento com `**` e pattern matching, bem como com compreensões de `dict`.
12221222

1223-
Além do `dict` básico, a biblioteca padrão oferece mapeamentos práticos prontos para serem usados, como o `defaultdict`, o `ChainMap`, e o `Counter`, todos definidos no módulo `collections`. Com a nova implementação de `dict`, o `OrderedDict` não é mais tão útil quanto antes, mas deve permanecer na bibliotece padrão para manter a compatibilidade retroativa—e por suas características específicas ausentes em `dict`, tal como a capacidade de levar em consideração o ordenamento das chaves em uma comparação `==`. Também no módulo `collections` está o `UserDict`, uma classe base fácil de usar na criação de mapeamentos personalizados.
1223+
Além do `dict` básico, a biblioteca padrão oferece mapeamentos práticos prontos para serem usados, como o `defaultdict`, o `ChainMap`, e o `Counter`, todos definidos no módulo `collections`. Com a nova implementação de `dict`, o `OrderedDict` não é mais tão útil quanto antes, mas deve permanecer na biblioteca padrão para manter a compatibilidade retroativa—e por suas características específicas ausentes em `dict`, tal como a capacidade de levar em consideração o ordenamento das chaves em uma comparação `==`. Também no módulo `collections` está o `UserDict`, uma classe base fácil de usar na criação de mapeamentos personalizados.
12241224

12251225
Dois métodos poderosos disponíveis na maioria dos mapeamentos são `setdefault` e `update`. O método `setdefault` pode atualizar itens que mantenham valores mutáveis—por exemplo, em um `dict` de valores `list`—evitando uma segunda busca pela mesma chave. O método `update` permite inserir ou sobrescrever itens em massa a partir de qualquer outro mapeamento, desde iteráveis que forneçam pares `(chave, valor)` até argumentos nomeados. Os construtores de mapeamentos também usam `update` internamente, permitindo que instâncias sejam inicializadas a partir de outros mapeamentos, de iteráveis e de argumentos nomeados.
12261226
Desde o Python 3.9 também podemos usar o operador `|=` para atualizar uma mapeamento e
@@ -1243,7 +1243,7 @@ Views de dicionários foram uma grande novidade no Python 3, eliminando o uso de
12431243
Na((("dictionaries and sets", "further reading on"))) documentação da Biblioteca Padrão do Python, a seção https://docs.python.org/pt-br/3/library/collections.html["collections—Tipos de dados de contêineres"] inclui exemplos e receitas práticas para vários tipos de mapeamentos. O código-fonte do Python para o módulo, pass:[<em>Lib/collections/__init__.py</em>], é uma excelente referência para qualquer um que deseje criar novos tipos de mapeamentos ou entender a lógica dos tipos existentes. O capítulo 1 do pass:[<a class="orm:hideurl" href="https://fpy.li/pycook3"><em>Python Cookbook</em>, 3rd ed.</a>] (O'Reilly), de David Beazley e Brian K. Jones traz 20 receitas práticas e perpicazes usando estruturas de dados—a maioria mostrando formas inteligentes de usar `dict`.
12441244

12451245
Greg Gandenberger defende a continuidade do uso de `collections.OrderedDict`,
1246-
com os argumentos de que "explícito é melhor que implícito," compatibilidade retroativa, e o fato de algumas ferramentas e bilbiotecas presumirem que a ordenação das chaves de um `dict` é irrelevante—nesse post: https://fpy.li/3-18["Python Dictionaries Are Now Ordered. Keep Using OrderedDict" (_Os dicionários do Python agora são ordenados. Continue a usar OrderedDict_)] (EN).
1246+
com os argumentos de que "explícito é melhor que implícito," compatibilidade retroativa, e o fato de algumas ferramentas e bibliotecas presumirem que a ordenação das chaves de um `dict` é irrelevante—nesse post: https://fpy.li/3-18["Python Dictionaries Are Now Ordered. Keep Using OrderedDict" (_Os dicionários do Python agora são ordenados. Continue a usar OrderedDict_)] (EN).
12471247

12481248
A https://fpy.li/pep3106[PEP 3106--Revamping dict.keys(), .values() and .items() (_Renovando dict.keys(), .values() e .items()_)] (EN) foi onde Guido van Rossum apresentou o recurso de views de dicionário para o Python 3. No resumo, ele afirma que a ideia veio da Java Collections Framework.
12491249

@@ -1295,7 +1295,7 @@ O JSON veio do JavaScript, mas por acaso também é quase um subconjunto exato d
12951295
O JSON é compatível com o Python, exceto pela grafia dos valores `true`, `false`, e `null`.
12961296
12971297
Armin Ronacher https://fpy.li/3-33[tuitou]
1298-
que gosta de brincar com o espaço de nomes global do Python, para acrescentar apelidos compatíveis com o JSON para o `True`, o `False`,e o `None` do Python, pois daí ele pode colar trechos de JSON diretamente no console.
1298+
que gosta de brincar com o espaço de nomes global do Python, para acrescentar apelidos compatíveis com o JSON para o `True`, o `False`, e o `None` do Python, pois daí ele pode colar trechos de JSON diretamente no console.
12991299
Sua ideia básica:
13001300
13011301
[role="pagebreak-before less_space"]

0 commit comments

Comments
 (0)