|
| 1 | +Parte I: Estruturas de dados |
| 2 | + |
| 3 | + 1. O modelo de dados do Python |
| 4 | + 1.1. Novidades nesse capítulo |
| 5 | + 1.2. Um baralho pythônico |
| 6 | + 1.3. Como os métodos especiais são utilizados |
| 7 | + 1.4. Visão geral dos métodos especiais |
| 8 | + 1.5. Por que len não é um método? |
| 9 | + 1.6. Resumo do capítulo |
| 10 | + 1.7. Para saber mais |
| 11 | + 2. Uma coleção de sequências |
| 12 | + 2.1. Novidades neste capítulo |
| 13 | + 2.2. Uma visão geral das sequências embutidas |
| 14 | + 2.3. Compreensões de listas e expressões geradoras |
| 15 | + 2.4. Tuplas não são apenas listas imutáveis |
| 16 | + 2.5. Desempacotando sequências e iteráveis |
| 17 | + 2.6. Pattern matching com sequências |
| 18 | + 2.7. Fatiamento |
| 19 | + 2.8. Usando + e * com sequências |
| 20 | + 2.9. list.sort versus a função embutida sorted |
| 21 | + 2.10. Quando uma lista não é a resposta |
| 22 | + 2.11. Resumo do capítulo |
| 23 | + 2.12. Leitura complementar |
| 24 | + 3. Dicionários e conjuntos |
| 25 | + 3.1. Novidades nesse capítulo |
| 26 | + 3.2. A sintaxe moderna dos dicts |
| 27 | + 3.3. Pattern matching com mapeamentos |
| 28 | + 3.4. A API padrão dos tipos de mapeamentos |
| 29 | + 3.5. Tratamento automático de chaves ausentes |
| 30 | + 3.6. Variações de dict |
| 31 | + 3.7. Mapeamentos imutáveis |
| 32 | + 3.8. Views de dicionários |
| 33 | + 3.9. Consequências práticas da forma como dict funciona |
| 34 | + 3.10. Teoria dos conjuntos |
| 35 | + 3.11. Consequências práticas da forma de funcionamento dos conjuntos |
| 36 | + 3.12. Operações de conjuntos em views de dict |
| 37 | + 3.13. Resumo do capítulo |
| 38 | + 3.14. Leitura complementar |
| 39 | + 4. Texto em Unicode versus Bytes |
| 40 | + 4.1. Novidades nesse capítulo |
| 41 | + 4.2. Questões de caracteres |
| 42 | + 4.3. Os fundamentos do byte |
| 43 | + 4.4. Codificadores/Decodificadores básicos |
| 44 | + 4.5. Entendendo os problemas de codificação/decodificação |
| 45 | + 4.6. Processando arquivos de texto |
| 46 | + 4.7. Normalizando o Unicode para comparações confiáveis |
| 47 | + 4.8. Ordenando texto Unicode |
| 48 | + 4.9. O banco de dados do Unicode |
| 49 | + 4.10. APIs de modo dual para str e bytes |
| 50 | + 4.11. Resumo do capítulo |
| 51 | + 4.12. Leitura complementar |
| 52 | + 5. Fábricas de classes de dados |
| 53 | + 5.1. Novidades nesse capítulo |
| 54 | + 5.2. Visão geral das fábricas de classes de dados |
| 55 | + 5.3. Tuplas nomeadas clássicas |
| 56 | + 5.4. Tuplas nomeadas com tipo |
| 57 | + 5.5. Introdução às dicas de tipo |
| 58 | + 5.6. Mais detalhes sobre @dataclass |
| 59 | + 5.7. A classe de dados como cheiro no código |
| 60 | + 5.8. Pattern Matching com instâncias de classes |
| 61 | + 5.9. Resumo do Capítulo |
| 62 | + 5.10. Leitura complementar |
| 63 | + 6. Referências, mutabilidade, e memória |
| 64 | + 6.1. Novidades nesse capítulo |
| 65 | + 6.2. Variáveis não são caixas |
| 66 | + 6.3. Identidade, igualdade e apelidos |
| 67 | + 6.4. A princípio, cópias são rasas |
| 68 | + 6.5. Parâmetros de função como referências |
| 69 | + 6.6. del e coleta de lixo |
| 70 | + 6.7. Peças que Python prega com imutáveis |
| 71 | + 6.8. Resumo do capítulo |
| 72 | + 6.9. Para saber mais |
| 73 | + |
| 74 | +Parte II: Funções como objetos |
| 75 | + |
| 76 | + 7. Funções como objetos de primeira classe |
| 77 | + 7.1. Novidades nesse capítulo |
| 78 | + 7.2. Tratando uma função como um objeto |
| 79 | + 7.3. Funções de ordem superior |
| 80 | + 7.4. Funções anônimas |
| 81 | + 7.5. Os nove sabores de objetos invocáveis |
| 82 | + 7.6. Tipos invocáveis definidos pelo usuário |
| 83 | + 7.7. De parâmetros posicionais a parâmetros somente nomeados |
| 84 | + 7.8. Pacotes para programação funcional |
| 85 | + 7.9. Resumo do capítulo |
| 86 | + 7.10. Leitura complementar |
| 87 | + 8. Dicas de tipo em funções |
| 88 | + 8.1. Novidades nesse capítulo |
| 89 | + 8.2. Sobre tipagem gradual |
| 90 | + 8.3. Tipagem gradual na prática |
| 91 | + 8.4. Tipos são definidos pelas operações possíveis |
| 92 | + 8.5. Tipos próprios para anotações |
| 93 | + 8.6. Anotando parâmetros apenas posicionais e variádicos |
| 94 | + 8.7. Tipos imperfeitos e testes poderosos |
| 95 | + 8.8. Resumo do capítulo |
| 96 | + 8.9. Para saber mais |
| 97 | + 9. Decoradores e Clausuras |
| 98 | + 9.1. Novidades nesse capítulo |
| 99 | + 9.2. Introdução aos decoradores |
| 100 | + 9.3. Quando o Python executa decoradores |
| 101 | + 9.4. Decoradores de registro |
| 102 | + 9.5. Regras de escopo de variáveis |
| 103 | + 9.6. Clausuras |
| 104 | + 9.7. A declaração nonlocal |
| 105 | + 9.8. Implementando um decorador simples |
| 106 | + 9.9. Decoradores na biblioteca padrão |
| 107 | + 9.10. Decoradores parametrizados |
| 108 | + 9.11. Resumo do capítulo |
| 109 | + 9.12. Leitura complementar |
| 110 | + 10. Padrões de projetos com funções de primeira classe |
| 111 | + 10.1. Novidades nesse capítulo |
| 112 | + 10.2. Estudo de caso: refatorando Estratégia |
| 113 | + 10.3. Padrão Estratégia aperfeiçoado com um decorador |
| 114 | + 10.4. O padrão Comando |
| 115 | + 10.5. Resumo do Capítulo |
| 116 | + 10.6. Leitura complementar |
| 117 | + |
| 118 | +Parte III: Classes e protocolos |
| 119 | + |
| 120 | + 11. Um objeto pythônico |
| 121 | + 11.1. Novidades nesse capítulo |
| 122 | + 11.2. Representações de objetos |
| 123 | + 11.3. A volta da classe Vector |
| 124 | + 11.4. Um construtor alternativo |
| 125 | + 11.5. classmethod versus staticmethod |
| 126 | + 11.6. Exibição formatada |
| 127 | + 11.7. Um Vector2d hashable |
| 128 | + 11.8. Suportando o pattern matching posicional |
| 129 | + 11.9. Listagem completa Vector2d, versão 3 |
| 130 | + 11.10. Atributos privados e "protegidos" no Python |
| 131 | + 11.11. Economizando memória com __slots__ |
| 132 | + 11.12. Sobrepondo atributos de classe |
| 133 | + 11.13. Resumo do capítulo |
| 134 | + 11.14. Leitura complementar |
| 135 | + 12. Métodos especiais para sequências |
| 136 | + 12.1. Novidades nesse capítulo |
| 137 | + 12.2. Vector: Um tipo sequência definido pelo usuário |
| 138 | + 12.3. Vector versão #1: compatível com Vector2d |
| 139 | + 12.4. Protocolos e o duck typing |
| 140 | + 12.5. Vector versão #2: Uma sequência fatiável |
| 141 | + 12.6. Vector versão #3: acesso dinâmico a atributos |
| 142 | + 12.7. Vector versão #4: o hash e um == mais rápido |
| 143 | + 12.8. Vector versão #5: Formatando |
| 144 | + 12.9. Resumo do capítulo |
| 145 | + 12.10. Leitura complementar |
| 146 | + 13. Interfaces, protocolos, e ABCs |
| 147 | + 13.1. O mapa de tipagem |
| 148 | + 13.2. Novidades nesse capítulo |
| 149 | + 13.3. Dois tipos de protocolos |
| 150 | + 13.4. Programando patos |
| 151 | + 13.5. Goose typing |
| 152 | + 13.6. Protocolos estáticos |
| 153 | + 13.7. Resumo do capítulo |
| 154 | + 13.8. Para saber mais |
| 155 | + 14. Herança: para o bem ou para o mal |
| 156 | + 14.1. Novidades nesse capítulo |
| 157 | + 14.2. A função super() |
| 158 | + 14.3. É complicado criar subclasses de tipos embutidos |
| 159 | + 14.4. Herança múltipla e a Ordem de Resolução de Métodos |
| 160 | + 14.5. Classes mixin |
| 161 | + 14.6. Herança múltipla no mundo real |
| 162 | + 14.7. Lidando com a herança |
| 163 | + 14.8. Resumo do capítulo |
| 164 | + 14.9. Leitura complementar |
| 165 | + 15. Mais dicas de tipo |
| 166 | + 15.1. Novidades nesse capítulo |
| 167 | + 15.2. Assinaturas sobrepostas |
| 168 | + 15.3. TypedDict |
| 169 | + 15.4. Coerção de Tipo |
| 170 | + 15.5. Lendo dicas de tipo durante a execução |
| 171 | + 15.6. Implementando uma classe genérica |
| 172 | + 15.7. Variância |
| 173 | + 15.8. Implementando um protocolo estático genérico |
| 174 | + 15.9. Resumo do capítulo |
| 175 | + 15.10. Leitura complementar |
| 176 | + 16. Sobrecarga de operadores |
| 177 | + 16.1. Novidades nesse capítulo |
| 178 | + 16.2. Introdução à sobrecarga de operadores |
| 179 | + 16.3. Operadores unários |
| 180 | + 16.4. Sobrecarregando + para adição de Vector |
| 181 | + 16.5. Sobrecarregando * para multiplicação escalar |
| 182 | + 16.6. Usando @ como operador infixo |
| 183 | + 16.7. Resumindo os operadores aritméticos |
| 184 | + 16.8. Operadores de comparação cheia |
| 185 | + 16.9. Operadores de atribuição aumentada |
| 186 | + 16.10. Resumo do capítulo |
| 187 | + 16.11. Leitura complementar |
| 188 | + |
| 189 | +Parte IV: Controle de fluxo |
| 190 | + |
| 191 | + 17. Iteradores, geradores e corrotinas clássicas |
| 192 | + 17.1. Novidades nesse capítulo |
| 193 | + 17.2. Uma sequência de palavras |
| 194 | + 17.3. Porque sequências são iteráveis: a função iter |
| 195 | + 17.4. Iteráveis versus iteradores |
| 196 | + 17.5. Classes Sentence com __iter__ |
| 197 | + 17.6. Sentenças preguiçosas |
| 198 | + 17.7. Quando usar expressões geradoras |
| 199 | + 17.8. Um gerador de progressão aritmética |
| 200 | + 17.9. Funções geradoras na biblioteca padrão |
| 201 | + 17.10. Funções de redução de iteráveis |
| 202 | + 17.11. Subgeradoras com yield from |
| 203 | + 17.12. Tipos iteráveis genéricos |
| 204 | + 17.13. Corrotinas clássicas |
| 205 | + 17.14. Resumo do capítulo |
| 206 | + 17.15. Leitura complementar |
| 207 | + 18. Instruções with, match, e blocos else |
| 208 | + 18.1. Novidades nesse capítulo |
| 209 | + 18.2. Gerenciadores de contexto e a instrução with |
| 210 | + 18.3. Pattern matching no lis.py: um estudo de caso |
| 211 | + 18.4. Faça isso, então aquilo: os blocos else além do if |
| 212 | + 18.5. Resumo do capítulo |
| 213 | + 18.6. Para saber mais |
| 214 | + 19. Modelos de concorrência em Python |
| 215 | + 19.1. Novidades nesse capítulo |
| 216 | + 19.2. A visão geral |
| 217 | + 19.3. Um pouco de jargão |
| 218 | + 19.4. Um "Olá mundo" concorrente |
| 219 | + 19.5. O real impacto da GIL |
| 220 | + 19.6. Um pool de processos caseiro |
| 221 | + 19.7. Python no mundo multi-núcleo. |
| 222 | + 19.8. Resumo do capítulo |
| 223 | + 19.9. Para saber mais |
| 224 | + 20. Executores concorrentes |
| 225 | + 20.1. Novidades nesse capítulo |
| 226 | + 20.2. Downloads concorrentes da web |
| 227 | + 20.3. Iniciando processos com concurrent.futures |
| 228 | + 20.4. Experimentando com Executor.map |
| 229 | + 20.5. Download com exibição do progresso e tratamento de erro |
| 230 | + 20.6. Resumo do capítulo |
| 231 | + 20.7. Para saber mais |
| 232 | + 21. Programação assíncrona |
| 233 | + 21.1. Novidades nesse capítulo |
| 234 | + 21.2. Algumas definições. |
| 235 | + 21.3. Um exemplo de asyncio: sondando domínios |
| 236 | + 21.4. Novo conceito: awaitable ou esperável |
| 237 | + 21.5. Downloads com asyncio e HTTPX |
| 238 | + 21.6. Gerenciadores de contexto assíncronos |
| 239 | + 21.7. Melhorando o download de bandeiras asyncio |
| 240 | + 21.8. Delegando tarefas a executores |
| 241 | + 21.9. Programando servidores asyncio |
| 242 | + 21.10. Iteração assíncrona e iteráveis assíncronos |
| 243 | + 21.11. Programação assíncrona além do asyncio: Curio |
| 244 | + 21.12. Dicas de tipo para objetos assíncronos |
| 245 | + 21.13. Como a programação assíncrona funciona e como não funciona |
| 246 | + 21.14. Resumo do capítulo |
| 247 | + 21.15. Para saber mais |
| 248 | + |
| 249 | +Parte V: Metaprogramação |
| 250 | + |
| 251 | + 22. Atributos dinâmicos e propriedades |
| 252 | + 22.1. Novidades nesse capítulo |
| 253 | + 22.2. Processamento de dados com atributos dinâmicos |
| 254 | + 22.3. Propriedades computadas |
| 255 | + 22.4. Usando uma propriedade para validação de atributos |
| 256 | + 22.5. Considerando as propriedades de forma adequada |
| 257 | + 22.6. Criando uma fábrica de propriedades |
| 258 | + 22.7. Tratando a exclusão de atributos |
| 259 | + 22.8. Atributos e funções essenciais para tratamento de atributos |
| 260 | + 22.9. Resumo do capítulo |
| 261 | + 22.10. Leitura Complementar |
| 262 | + 23. Descritores de Atributos |
| 263 | + 23.1. Novidades nesse capítulo |
| 264 | + 23.2. Exemplo de descritor: validação de atributos |
| 265 | + 23.3. Descritores dominantes versus descritores não dominantes |
| 266 | + 23.4. Métodos são descritores |
| 267 | + 23.5. Dicas para o uso de descritores |
| 268 | + 23.6. Docstrings de descritores e a sobreposição de exclusão |
| 269 | + 23.7. Resumo do capítulo |
| 270 | + 23.8. Leitura complementar |
| 271 | + 24. Metaprogramação de classes |
| 272 | + 24.1. Novidades nesse capítulo |
| 273 | + 24.2. Classes como objetos |
| 274 | + 24.3. type: a fábrica de classes embutida |
| 275 | + 24.4. Uma função fábrica de classes |
| 276 | + 24.5. Apresentando __init_subclass__ |
| 277 | + 24.6. Melhorando classes com um decorador de classes |
| 278 | + 24.7. O que acontece quando: importação versus execução |
| 279 | + 24.8. Introdução às metaclasses |
| 280 | + 24.9. Uma solução para Checked usando uma metaclasse |
| 281 | + 24.10. Metaclasses no mundo real |
| 282 | + 24.11. Um hack de metaclasse com __prepare__ |
| 283 | + 24.12. Para encerrar |
| 284 | + 24.13. Resumo do capítulo |
| 285 | + 24.14. Leitura complementar |
| 286 | + Posfácio |
| 287 | + |
0 commit comments