
Antonio Muniz
Já inspirou mais de 30 mil pessoas em cursos de MBA, bootcamps, videoaulas, workshops, consultorias e palestras em empresas líderes de mercado, como SulAmérica, Vivo, Itaú, Oi, Furnas, Eletrobras, DHL, Banco do Brasil, Ernst & Young, Finep, Sebrae, UOL, Pagseguro, Makro, Totvs, Jucesp, Ambev Tech e Dafiti.
Como fundador e líder da Jornada Colaborativa, mobilizou milhares de coautores e novas lideranças para escrever 20 livros sobre tecnologia, desenvolvimento de software, agilidade, inovação e liderança.
Sua formação tem uma base multidisciplinar em negócios, tecnologia e liderança, com mestrado em administração no Ibmec, MBA em telecomunicações na FGV, graduação em tecnologia na Unigranrio e certificações de agilidade, Lean tecnologia, projetos, processos e serviços.
Contato: munizprofessor@gmail.

André Guilhon
Agile Coach, Scrum Master e 17 anos de experiência na área de tecnologia, atuando em diversas áreas, desde infraestrutura até desenvolvimento de software. Fundador da comunidade TI com Café, com foco no networking profissional do pessoal de TI. Ex-militar, empreendedor, apaixonado por pessoas, protagonismo, autoconhecimento e propósito de vida.
Cláudio Gomes
Engenheiro de Computação, formado no Instituto Militar de Engenharia. Analista de Sistemas Sênior na Petrobras S/A, onde atua como Cientista de Dados na Diretoria de Exploração de Produção. Apaixonado por conhecimento, também pratica o desenho artístico e a fotografia de rua em seu tempo livre.
.jpg)
Eduardo Gaspar
Organizador do Meetups Analytics em Tudo, Big Data RJ e Data Science RJ. Apaixonado por algoritmos, desenvolvimento de software, inteligência artificial e métodos ágeis. Cientista da computação formado pela PUC-RJ e pós-graduado nas áreas de big data, gestão de projetos e engenharia de software.

Juliana Guamá
Engenheira de Sistemas pela Unimontes, pós-graduanda em machine learning pelo IGTI e atualmente Cientista de Dados na Take Blip. É palestrante, mentora, apaixonada pelo trabalho desenvolvido pelas comunidades técnicas de BH e atuante no fortalecimento e na presença de mulheres na área de tecnologia.

Karine Cordeiro
Software Engineer, coautora de livros da Jornada Colaborativa. É curadora de conteúdos na She’s Tech Conference, faz parte da organização do DevDay e coordena trilhas no TDC. Graduada em Sistemas de Informação pela UNA e pós-graduada em Desenvolvimento de Aplicações Móveis pela PUC Minas. É apaixonada por comunidades e atua no fortalecimento da presença de mulheres na área de tecnologia.
.jpg)
Rodrigo Isensee
Agile Coach, professor universitário, amante de artes marciais práticas e entusiasta de tecnologia desde os oito anos de idade (enquanto a galera soltava pipa ele programava). Apaixonado por ensinar e pelo aprendizado colaborativo.
.jpg)
Tatiana Escovedo
Cientista de Dados, Engenheira de Software e Agilista apaixonada por ensinar e aprender. Doutora em Inteligência Artificial, Mestre em Engenharia de Software, Bacharel em Informática, Professora da PUC-Rio e Analista de Sistemas da Petrobras. Nas horas vagas, é bailarina e pensa em maneiras de mudar o mundo.
eBook: Jornada Python: uma jornada imersiva na aplicabilidade de uma das mais poderosas linguagens de programação do mundo
Neste livro você será guiado em uma viagem chamada “Jornada Python”, iniciando com os fundamentos da linguagem, passando por orientação a objetos, boas práticas de programação e chegando a alguns assuntos mais avançados, como o desenvolvimento de aplicações web e ciência de dados. Esperamos vocês. Tenha uma boa viagem!
A Jornada Colaborativa
Era uma vez um professor universitário que sonhava em lançar um livro quando finalizou o mestrado em 2006. O sonho começou a ser concretizado em 2017 com o livro “Jornada DevOps”, mas alguns obstáculos travaram sua evolução após a escrita de três capítulos.
Em setembro de 2018, durante sua palestra na PUC Minas, surgiu um click: “Será que outras pessoas apaixonadas por DevOps ajudariam com a escrita colaborativa?
Dezenas de colaboradores aceitaram o convite e o livro foi lançado para 350 pessoas no dia 06 de junho de 2019 no Centro de Convenções SulAmérica, no Rio de Janeiro.
A escalada dos times gerou novas amizades, aprendizados, doação de R$ 277.000,00 para instituições com o lançamento de 15 livros e sonhamos transformar mais vidas com a inteligência coletiva e o apoio de empresas amigas.
Coautores:
Adamys Monnerat
Alexandra Raibolt
Alexandro Angelo Romeira
André Guilhon
Antonio Muniz
Bruno Hanai
Carlos Eduardo Silva Castro
Cassius T. C. Mendes
Cláudio Henrique Franco Gomes
Daniele A. Longato da Silva
Davi Frazão
Davi Luis de Oliveira
Eduardo Bizarria Gaspar
Edytarcio Pereira
Élysson Mendes Rezende
Eric Gomes
Everton de Castro
Filipe Rudá
Flávio Mariano
Francisco Hugo Siqueira Rosa
Guilherme Arthur de Carvalho
Guilherme de Almeida Gasque
Guilherme Ito
Guilherme Rozenblat
Helcio Gomes
Jefferson da S. Nascimento
Joan Davi
João Pedro Prates da Conceição Galhianne
John Kevid
Juliana Guamá
Karina Tiemi Kato
Karine Cordeiro
Lourena Ohara
Lucas Pastana
Lucas Vieira Araujo
Luiz Paulo O. Paula
Marcell Guilherme C. da Silva
Marco Alencastro
Marcos Alexandre Castro
Marcus Paiva
Mikaeri Ohana Estevam Candido
Naiara Cerqueira
Pablo Augusto Furtado
Paulo R. Z. Pinto
Rafael Gonsalves Cruvinel
Reinaldo Maciel
Rodrigo Alves Mendonça
Rodrigo Isensee
Roger Sampaio
Saulo Filho Percival
Sérgio Berlotto Jr.
Sidnei Santiago
Tatiana Escovedo
Viviane Laporti
William Villela de Carvalho
Wygna Yngrid da Silva Matias Xavier
Yussif Barcelos Dutra
SUMÁRIO JORNADA PYTHON
PARTE I. CONHECENDO A LINGUAGEM
1. Introdução (Eduardo Gaspar/Karine Cordeiro/Rodrigo Isensee)
O que é, para que serve e onde usar
2. História do Python (Wygna Yngrid da Silva Matias Xavier)
Tipos básicos – Classes
Tipos básicos – strings
Tipos básicos – Inteiros e longos
Tipos básicos – Comparações
3. Por que escolher Python? (Pablo Augusto Furtado)
Tipagem dinâmica
Simplicidade
Linguagem de alto nível
Multifuncionalidade
Desempenho
Produtividade
Comunidade
4. Biblioteca padrão e documentação oficial (Paulo R. Z. Pinto)
Definições
5. PEP – Python Enhancement Proposal (Sérgio Berlotto Jr.)
PARTE II. PREPARANDO O AMBIENTE
6. Instalando (Marcus Paiva/Naiara Cerqueira)
Windows
Linux
MacOS
7. Primeiro programa (Adamys Monnerat/Tatiana Escovedo/Guilherme Rozenblat)
Imprimindo na saída padrão
Modo script
Tipos de script e suas linguagens
Interpretador
CLI
8. IDEs (Yussif Barcelos Dutra/Naiara Cerqueira)
Jupyter Notebook
Spyder
PyCharm
Visual Studio Code
9. Criação de ambiente virtual (Sérgio Berlotto Jr./Alexandra Raibolt/Juliana Guamá)
Ferramentas de gestão de ambiente virtual
venv
virtualenv
virtualenvwrapper
pipenv
conda
10. Gerenciadores de pacotes (Jefferson da S. Nascimento/Cláudio Henrique Franco Gomes)
11. Linters (Cláudio Henrique Franco Gomes)
Visual Studio Code
PyCharm
Spyder
Jupyter Lab
Python Code Quality Authority
PARTE III. FUNDAMENTOS DE PROGRAMAÇÃO
12. Tipos de dados e variáveis (Davi Luis de Oliveira)
13. Expressões e comentários (Lucas Vieira Araujo)
Expressões
Avaliação de expressões
Avaliação em curto-circuito
Comentários
14. Mutabilidade e imutabilidade (Lucas Vieira Araujo/Flávio Mariano/John Kevid)
15. Strings (Rafael Gonsalves Cruvinel)
Escrevendo strings
Formatando strings
Formatação ‘%-format’
Formatação com ‘format’
Formatação com ‘F-string’
Grupo de strings
Funções com string
Somando strings
Multiplicação de strings
Funções built-in
Funções que retornam um boolean
16. Coleções (Rodrigo Alves Mendonça)
Tipos de coleções
Iteração
Lista (list)
Tupla (tuple)
Dicionário (dict)
Views de dicionários
Conjunto (set e frozenset)
17. Operadores e condicionais (Daniele A. Longato da Silva)
18. Controle de fluxo (Filipe Rudá/Lucas Pastana)
Desmistificando o for
Controlando o fluxo de repetição com break, continue e pass
Looping inline
19. Tratamento de exceções e erros (Guilherme Ito)
Definição e exemplos
Capturando exceções
Levantando exceções
Customizando exceções
Extra – Classes Exception e BaseException
20. Comprehension (Sérgio Berlotto Jr.)
21. Funções (Cláudio Henrique Franco Gomes)
Criando uma função
Escopo de variáveis
Parâmetros e valores de retorno
Parâmetros arbitrários
Lambda
Funções aninhadas
Funções de primeira classe
Decorators
Anotações e documentações em funções
22. Manipulação de arquivos (Guilherme Arthur de Carvalho)
Método builtin open
Criando uma agenda
23. Conexão com banco de dados (Cláudio Henrique Franco Gomes)
24. Documentando o código (Juliana Guamá/Roger Sampaio)
Docstrings
Pydoc
Type hinting
Estilos para Docstrings
GoogleDoc
NumpyDoc
PARTE IV. ORIENTAÇÃO A OBJETOS
25. Introdução à orientação de objetos e seus quatro pilares (Tatiana Escovedo/Viviane Laporti)
26. Classes, objetos, métodos e atributos (Cláudio Henrique Franco Gomes)
Definição
Sintaxe
Objetos e instâncias
Métodos
Atributos
27. Encapsulamento (Tatiana Escovedo/Viviane Laporti)
28. Herança, polimorfismo e classes abstratas (Tatiana Escovedo/Viviane Laporti)
Herança
Polimorfismo
Classes abstratas
29. Associação, agregação e composição (Tatiana Escovedo)
30. Decoradores de métodos e de classes (Cláudio Henrique Franco Gomes)
Métodos estáticos
Métodos de classe
Propriedades
31. Generators (Cláudio Henrique Franco Gomes)
Generator Pattern
Expressão Generator
32. Maps (Jefferson da S. Nascimento)
33. Descriptors (Cláudio Henrique Franco Gomes)
Classe property
Decorators
Criação dinâmica de descriptors
Prós e contras
34. Métodos mágicos (Sérgio Berlotto Jr.)
35. Modelos arquiteturais (Davi Luis de Oliveira/Karine Cordeiro)
Arquitetura em camadas
SOA
MVC
MVT
Arquitetura de microsserviços
PARTE V. TÓPICOS AVANÇADOS DE PROGRAMAÇÃO
36. SOLID (Eduardo Gaspar/Helcio Gomes/Rodrigo Isensee/Sérgio Berlotto Jr./Tatiana Escovedo/WilliamVillela de Carvalho)
Princípio de responsabilidade única
Princípio aberto/fechado
Princípio da substituição de Liskov
Princípio da segregação de interfaces
Princípio da inversão de dependência
37. Guia de estilos (Alexandro Angelo Romeira)
Nomenclatura
Layout de código
Comentários e notas explicativas
38. Programação funcional (Marcell Guilherme C. da Silva)
39. Concorrência e programação assíncrona (Rodrigo Alves Mendonça/Edytarcio Pereira/Marco Alencastro)
Programação síncrona e assíncrona
Concorrência e paralelismo
GIL – Global Interpreter Lock
O módulo AsyncIO
Ciclo de eventos (event loop)
Corrotinas (coroutines)
Futures e objetos de espera (awaitable objects)
Pontos de atenção na programação assíncrona
Conclusão
40. Metaprogramação (Cláudio Henrique Franco Gomes)
41. Clean code e boas práticas (Sérgio Berlotto Jr.)
Nomes são importantes
Não use abreviações
Utilize nomes descritivos
Sempre pergunte o que você quer saber de forma clara
Utilize booleanos de forma implícita
Cuidado com a quantidade de parâmetros
Comentários são vilões quando mal utilizados
A regra do escoteiro
Teste sempre
SOLID
Padrões de projeto
Conclusão
PARTE VI. TESTES
42. Introdução a testes (Marcell Guilherme C. da Silva)
43. TDD – Test Driven Development (Cláudio Henrique Franco Gomes)
44. Bibliotecas built-in (Jefferson da S. Nascimento)
45. Testes unitários e testes automatizados (Saulo Filho Perceval/Lourena Ohara)
Testes unitários
Escrevendo testes unitários
Princípios para escrever bons testes unitários
Cobertura de código
Tipos de teste unitário
Testes automatizados
Automatizando testes funcionais
Automatizando testes de API com Python
GET
POST
PUT
DELETE
46. Mocks (Cláudio Henrique Franco Gomes)
Decorator patch
Valores de retorno e efeitos colaterais
Imitando métodos de instâncias e de classes
Imitando propriedades de classes
Imitando classes inteiras
PARTE VII. DESENVOLVIMENTO DE APLICAÇÕES WEB
47. Fundamentos da web (Everton de Castro/Tatiana Escovedo)
O protocolo HTTP
Modelo cliente-servidor
HTML
Folhas de estilo e scripts
48. Web APIs (Karine Cordeiro/Marcus Paiva/Naiara Cerqueira)
O que é uma API?
Formatos de comunicação para APIs
O que é uma REST?
O que é uma RESTful API?
O que é GraphQL?
O que é WSGI?
49. Conceito de frameworks (Tatiana Escovedo)
50. Django (André Guilhon/Élysson Mendes Rezende)
Como o Django funciona?
Estrutura do Django
Início do projeto
Configurando um banco de dados
Modelos do Django
Migrations
Módulo de administração do Django
Telas de acesso do usuário
Configuração de rotas internas
Cadastrando novos produtos no banco de dados
Editando produtos no banco de dados
Excluindo produtos no banco de dados
51. Flask (Marcos Alexandre Castro/Sérgio Berlotto Jr.)
Um pouco mais sobre o Jinja
52. Executando tarefas assíncronas (Guilherme Arthur de Carvalho)
PARTE VIII. ANÁLISE DE DADOS
53. Introdução ao processo de ETL (Guilherme de Almeida Gasque)
O que é ETL?
Extração
Transformação
Carga
54. Web scraping (Francisco Hugo Siqueira Rosa)
55. Manipulação e tratamento de dados (Luiz Paulo O. Paula/Bruno Hanai/Davi Frazão/Joan Davi)
NumPy
Criação de arrays unidimensionais
Reshape de arrays
Split de arrays
Operações com matrizes
Pandas
Operações com dataframes
Criando colunas
Renomeando colunas
Removendo colunas
Fatiamento (slicing)
Métodos iloc e loc
Método apply
56. Visualização de dados (Tatiana Escovedo/Marcos Alexandre Castro)
Matplotlib
Pandas
Seaborn
Plotly
Dash
57. Conceitos e aplicações de big data (Sidnei Santiago/Lucas Pastana)
O que é big data?
Volume de dados produzidos
Dados estruturados e não estruturados
PARTE IX. INTELIGÊNCIA DE DADOS
58. Introdução à inteligência artificial (Mikaeri Ohana Estevam Candido)
Visões de inteligência artificial
História da inteligência artificial
Abordagens da inteligência artificial
Divisões da inteligência artificial
Machine learning
Deep learning
Aplicações da inteligência artificial
59. Machine learning – conceitos e modelos (Tatiana Escovedo)
Classificação
Regressão
Clusterização
Associação
Algoritmos de machine learning
Árvore de decisão
K-vizinhos mais próximos (KNN)
Regressão linear
Regressão logística
Naïve Bayes
Support Vector Machines (SVM)
K-means
Para saber mais
60. Deep learning (Alexandra Raibolt)
Artificial Neural Networks
Single-Layer Perceptron
Multilayer Perceptron
Convolutional Neural Networks
Recurrent Neural Networks
Long Short-Term Memory
Autoencoders
Generative Adversarial Networks
Deep Reinforcement Learning
Natural Language Processing
Considerações finais
61. Visão computacional (Alexandra Raibolt)
Prática: detecção, descrição e correspondência de características com ORB
62. Scikit-Learn (Carlos Eduardo Silva Castro/Tatiana Escovedo/Cassius T. C. Mendes)
Representação de dados
A API Estimator
Validação de modelos
Prática: projeto de classificação binária usando o Scikit-Learn
Passo 1 – Definição do problema
Passo 2 – Carga de dados
Passo 3 – Análise de dados
Passo 4 – Pré-processamento de dados: separação em conjunto de treino e conjunto de teste
Passo 5 – Modelos de classificação
Passo 6 – Finalização do modelo
63. TensorFlow (Cláudio Henrique Franco Gomes)
Instalação
Tensores
Carregamento de dados
Pré-processamento
Modelagem
Métricas
64. PyTorch (Reinaldo Maciel)
História
Por que PyTorch?
Instalação
Trabalhando com o PyTorch
Desenvolvendo com o PyTorch
65. Keras (João Pedro Prates da Conceição Galhianne)
Por que Keras?
Instalação
Prática
Iniciando o modelo
Apurando o modelo
66. Desenvolvimento de chatbot (Eric Gomes)
PARTE X. AUTOMAÇÃO DE PROCESSOS
67. Serverless (Alexandro Angelo Romeira)
68. CI e CD (Davi Luis de Oliveira)
69. Gerando packages e publicando no PyPi (Karina Tiemi Kato)
Referências bibliográficas
Dedicatória e agradecimentos
Sobre os organizadores e coautores
Nenhuma mensagem encontrada