Python Eficaz
59 maneiras de programar melhor em Python
Descrição do livro
É fácil começar a programar em Python, e esse é o motivo de a linguagem ser tão popular. Contudo, os pontos fortes, aspectos belos e expressividade únicos do Python podem ser um tanto difíceis de entender, e há armadilhas que podem fazer tropeçar o programador desavisado.
Python Eficaz ajudará o leitor a dominar o mais verdadeiro estilo “pythônico” da arte de programar, empregando todo o potencial do Python para escrever códigos robustos e de desempenho exemplar. Usando o estilo conciso e baseado em cenários, visto no best-seller C++ Eficaz, de Scott Meyers, o autor Brett Slatkin reúne 59 das melhores práticas e dicas em Python, e as explica com exemplos realistas de código.
Com anos de experiência ajudando a construir a infraestrutura do Google em Python, Slatkin revela trechos simples de código e peculiaridades da linguagem que causam profundo impacto no comportamento e desempenho do código. Serão mostradas as melhores maneiras de realizar tarefas cruciais e, dessa forma, escrever códigos fáceis de entender, manter e aprimorar.
O livro inclui
Instruções práticas para todas as principais áreas de desenvolvimento em Python 3.x e 2.x, com explicações detalhadas e exemplos
Melhores práticas para escrever funções claras, que incentivam sua reutilização e evitam erros
Explicação sobre como expressar comportamentos com precisão usando classes e objetos
Orientação para evitar armadilhas com metaclasses e atributos dinâmicos
Abordagem mais eficiente para implementar simultaneidade e paralelismo
Técnicas e expressões mais adequadas para uso dos módulos nativos do Python
Ferramentas e melhores práticas para o desenvolvimento colaborativo
Soluções para depuração, testes e otimização de forma a melhorar a qualidade e o desempenho
Sumário
- Elogios a Python Eficaz
- Prefácio
- Agradecimentos
- Sobre o autor
- Raciocínio pythônico
- Item 1: Saiba qual versão de Python está em uso
- Item 2: Siga o Guia de Estilo PEP 8
- Item 3: Saiba as diferenças entre bytes, str e unicode
- Item 4: Escreva funções auxiliares em vez de expressões complexas
- Item 5: Saiba como fatiar sequências
- Item 6: Evite usar start, end e stride em uma mesma fatia
- Item 7: Use abrangências de lista em vez de map e filter
- Item 8: Evite mais de duas expressões em abrangências de lista
- Item 9: Considere usar expressões geradoras em abrangências muito grandes
- Item 10: Prefira enumerate em vez de range
- Item 11: Use zip para processar iteradores em paralelo
- Item 12: Evite usar blocos else depois de laços for e while
- Item 13: Use todo o potencial dos blocos try/except/else/finally
- Funções
- Item 14: Prefira exceções em vez de devolver None
- Item 15: Saiba como closures interagem com os escopos das variáveis
- Item 16: Prefira geradores em vez de retornar listas
- Item 17: Seja conservador quando iterar sobre argumentos
- Item 18: Reduza a poluição visual com argumentos opcionais
- argumentos
- específicos
- Item 21: Garanta a legibilidade com argumentos por palavras-chave
- Classes e herança
- dicionários e tuplas
- Item 23: Aceite funções para interfaces simples em vez de classes
- Item 25: Inicialize classes ancestrais com super
- Item 26: Use heranças múltiplas apenas para classes utilitárias mix-in
- Item 27: Prefira atributos públicos em vez de privativos
- Metaclasses e atributos
- Item 29: Use atributos comuns em vez dos métodos get e set
- Item 30: Considere usar @property em vez de refatorar atributos
- Item 33: Valide subclasses com metaclasses
- Item 34: Registre a existência de uma classe com metaclasses
- Item 35: Crie anotações de atributos de classe com metaclasses
- Simultaneidade e paralelismo
- Item 36: Use subprocess para gerenciar processos-filho
- Item 37: Use threads para bloquear I/O e evitar paralelismo
- Item 39: Use Queue para coordenar o trabalho entre as threads
- Item 41: Considere usar concurrent futures para obter paralelismo real
- Módulos nativos
- Item 42: Defina decoradores de função com functools wraps
- reutilizável de try/finally
- Item 44: Aumente a confiabilidade de pickle com copyreg
- Item 45: Use datetime em vez de time para relógios locais
- Item 46: Use algoritmos e estruturas de dados nativos
- Item 47: Use decimal quando a precisão for de importância vital
- Item 48: Saiba onde encontrar os módulos desenvolvidos pela comunidade
- Colaboração
- Item 49: Escreva docstrings para toda e qualquer função, classe e módulo
- Item 50: Use pacotes para organizar módulos e criar APIs estáveis
- Item 51: Defina uma Exception-raiz para isolar chamadores e APIs
- Item 52: Saiba como romper dependências circulares
- Produção
- implementação
- Item 55: Use strings com a função repr para depuração
- Item 56: Teste absolutamente tudo com unittest
- Item 57: Prefira usar depuradores interativos como o pdb
- Item 58: Meça os perfis de desempenho antes de otimizar o código
- Item 59: Use tracemalloc para entender o uso e os vazamentos de memória
Sobre o autor
Brett Slatkin, engenheiro sênior de software na Google, é chefe de engenharia e cofundador dos Google Consumer Surveys. Anteriormente, trabalhou na infraestrutura em Python do Google App Engine, empregou Python na administração do imenso parque de servidores da Google e usou Python para implementar o sistema Google que gerencia o PubSubHubbub, um… Ver perfil completo ▶
Livros relacionados
Opinião dos leitores
Alyson B G
Livro com algumas dicas interessantes, mas ao contrário do que o autor diz, não considero uma obra boa para iniciantes. Prós: Gostei bastante das explicações sobre pacotes e como evitar dependências circulares. Contras: O livro aborda uma grande variedade de assuntos, então se o leitor não conhece pelo menos o básico desses assuntos fica sem entender a maioria das dicas.
Fabio O
Livro muito bom, não é para iniciantes. Mas vale a pena comprar.
Luiz F F
Livro bom com bastante dicas interessantes.
Michell S F
Livro essencial não apenas para iniciantes mas também para quem já possui certa experiência com a linguagem. Os exemplos do livro são diretos e muito úteis. Os motivos para adotar ou evitar uma determinada abordagem são muito bem explicadas. Comprei o livro e não me arrependo. Recomendo!






