Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
David Beazley
Brian K. Jones
Novatec
Authorized Portuguese translation of the English edition of titled Python Cookbook, 3rd Edition, ISBN 978-1-44934037-7 2013, David Beazley and Brian K. Jones. This translation is published and sold by permission of O'Reilly
Media, Inc., the owner of all rights to publish and sell the same.
Traduo em portugus autorizada da edio em ingls do ttulo Python Cookbook, 3rd Edition, ISBN 978-1-44934037-7 2013, David Beazley e Brian K. Jones. Esta traduo publicada e vendida com a permisso da O'Reilly
Media, Inc., detentora de todos os direitos para publicao e venda desta obra.
Novatec Editora Ltda. 2013.
Todos os direitos reservados e protegidos pela Lei 9.610 de 19/02/1998.
proibida a reproduo desta obra, mesmo parcial, por qualquer processo, sem prvia autorizao, por escrito,
do autor e da Editora.
Editor: Rubens Prates
Traduo: Lcia A. Kinoshita
Reviso tcnica: Aurelio Jargas
Reviso gramatical: Marta Almeida de S
Editorao eletrnica: Carolina Kuwabata
ISBN: 978-85-7522-332-1
Histrico de impresses:
Novembro/2013
Primeira edio
Sumrio
Prefcio.............................................................................................................................................13
Captulo 1 Estruturas de dados e algoritmos.....................................................................................18
1.1. Desempacotar uma sequncia em variveis separadas...............................................18
1.2. Desempacotar elementos de iterveis de tamanho arbitrrio.................................... 20
1.3. Manter os ltimos N itens...................................................................................... 23
1.4. Encontrar os N itens maiores ou menores............................................................... 25
1.5. Implementar uma fila de prioridades...................................................................... 26
1.6. Mapear chaves a mltiplos valores em um dicionrio............................................... 29
1.7. Manter dicionrios em ordem................................................................................. 30
1.8. Fazer clculos com dicionrios............................................................................... 32
1.9. Encontrar itens comuns em dois dicionrios........................................................... 34
1.10. Remover itens duplicados de uma sequncia, preservando a ordem........................ 35
1.11. Dar nome a uma fatia (slice).................................................................................. 37
1.12 Determinar os itens que ocorrem mais frequentemente em uma sequncia.............. 38
1.13. Ordenar uma lista de dicionrios por meio de uma chave comum.......................... 40
1.14. Ordenar objetos sem suporte nativo para comparao............................................ 42
1.15. Agrupar registros de acordo com um campo.......................................................... 43
1.16. Filtrar elementos de uma sequncia....................................................................... 45
1.17. Extrair um subconjunto de um dicionrio............................................................. 48
1.18. Mapear nomes a elementos de sequncia............................................................... 49
1.19. Transformar e reduzir dados ao mesmo tempo........................................................51
1.20. Combinar mltiplos mapeamentos em um nico mapeamento.............................. 53
Python Cookbook
Sumrio
Python Cookbook
Captulo 7 Funes........................................................................................................................249
7.1 Criar funes que aceitem qualquer quantidade de argumentos...............................249
7.2 Criar funes que aceitem somente argumentos nomeados.................................... 250
7.3 Associar metadados informativos aos argumentos de uma funo...........................252
7.4 Retornar mltiplos valores de uma funo..............................................................253
7.5 Definir funes com argumentos default............................................................... 254
7.6 Definir funes annimas ou inline.......................................................................257
7.7 Capturar variveis em funes annimas............................................................... 258
7.8 Fazer um callable de n argumentos funcionar como um callable com menos argumentos.260
7.9 Substituir classes com um nico mtodo por funes............................................ 263
7.10 Levar um estado extra s funes de callback....................................................... 264
7.11 Definir funes de callback inline........................................................................ 268
7.12 Acessar variveis definidas em uma closure........................................................... 271
Sumrio
Captulo 9 Metaprogramao........................................................................................................365
9.1 Colocar um wrapper em torno de uma funo....................................................... 365
9.2 Preservar metadados de funes ao criar decoradores.............................................367
9.3 Desfazer o encapsulamento de um decorador........................................................ 369
9.4 Definir um decorador que aceite argumentos.......................................................... 371
9.5 Definir um decorador com atributos ajustveis pelo usurio...................................372
9.6 Definir um decorador que aceite um argumento opcional.......................................376
9.7 Impor uma verificao de tipos em uma funo por meio de um decorador.............378
9.8 Definir decoradores como parte de uma classe....................................................... 382
9.9 Definir decoradores como classes.......................................................................... 384
9.10 Aplicar decoradores a mtodos de classe e estticos.............................................. 387
9.11 Criar decoradores que adicionam argumentos a funes encapsuladas................... 389
9.12 Usar decoradores para modificar definies de classe.............................................392
9.13 Utilizar uma metaclasse para controlar a criao de instncias...............................394
9.14 Capturar a ordem de definio de atributos de classe.............................................397
9.15 Definir uma metaclasse que aceite argumentos opcionais..................................... 400
9.16 Impor uma assinatura de argumentos em *args e **kwargs.................................... 402
9.17 Impor convenes de codificao em classes......................................................... 406
9.18 Definir classes por meio do prprio programa...................................................... 409
9.19 Inicializar membros de classe no momento da definio........................................ 413
9.20 Implementar mltiplos despachos com anotaes de funo.................................415
9.21 Evitar mtodos repetitivos de propriedades........................................................... 421
9.22 Definir gerenciadores de contexto da maneira fcil................................................423
9.23 Executar cdigo com efeitos colaterais locais.........................................................425
9.24 Fazer parse e anlise de cdigo-fonte em Python.................................................. 428
9.25 Fazer o disassembly de bytecodes de Python.........................................................433
10
Python Cookbook
Captulo 12 Concorrncia...............................................................................................................527
12.1 Iniciar e terminar threads......................................................................................527
12.2 Determinar se uma thread foi iniciada..................................................................530
12.3 Efetuar comunicao entre threads.......................................................................534
12.4 Travar sees crticas........................................................................................... 540
12.5 Utilizar lock evitando deadlocks.......................................................................... 543
12.6 Armazenar estados especficos de threads.............................................................547
12.7 Criar um pool de threads.................................................................................... 549
12.8 Realizar programao paralela simples.................................................................553
12.9 Lidar com o GIL (e como parar de se preocupar com ele)......................................557
12.10 Definir uma tarefa do tipo ator...........................................................................561
12.11 Implementar troca de mensagens usando o padro publish/subscribe.................. 565
12.12 Usar geradores como alternativa s threads......................................................... 569
12.13 Fazer polling em vrias filas de threads............................................................... 577
12.14 Disparar um processo daemon no Unix.............................................................. 580
Sumrio
11
12
Python Cookbook