História ● Criada por Guido van Rossum ○ Centrum Wiskunde & Informatica (CWI) ● 1989 - 1990 ● Inspirada na linguagem ABC e influenciada por Algol, C, Lisp e outras ● Ruby foi inspirada no Python ● Ênfase em legibilidade de código ● Monty Python's Flying Circus deu origem ao nome da linguagem
Desvantagens ● Mais lenta em alguns cenários ○ Em comparação a C e Go ● Erros em runtime ○ Por não ser compilada alguns erros só são percebidos durante a execução
Novidades ● 3.0 ○ Print virou uma função ○ Alterações na sintaxe (incompatível com Python 2) ○ Novo formatador de string ● 3.4 ○ Asynchronous I/O ● 3.5 ○ Novo operador @ para multiplicação de matrizes ○ Type hints ○ Async e Await ● 3.6 ○ String interpolation ● 3.7 ○ Data Classes
Suporte de frameworks/bibliotecas ● A maioria suporta Python 3 ○ Requests ○ Boto ○ Jinja2 ○ IPython ○ Ansible ○ Entre outros ● Alguns estão começando a remover suporte a Python 2 ○ Django ○ Tornado ○ NumPy ○ Pandas ○ Wagtail
Web Server Gateway Interface (WSGI) ● Interface entre Web Servers e Web Applications ● Padronização proposta pela PEP-333 e PEP-3333 ● WSGI Servers populares ○ Gunicorn ○ uWSGI ○ Apache mod_wsgi
Django ● Full Stack Framework ○ ORM ○ Template Engine ○ Site Admin ○ Internacionalização ● Seguro ○ XSS ○ CSRF ○ SQL Injection ○ Clickjacking ● Escalável (up to 50k req/s) ● Possui Web Server interno apenas para desenvolvimento
Tornado ● Full Stack Framework ○ Template ○ Routing ○ Internacionalização ● Non-blocking I/O ● Ideal para long polling e websockets ● Suporte parcial ao WSGI ● Web Server assíncrono interno ● Mantido pelo Facebook
Flask ● Micro Framework ○ Suporte a REST ○ Jinja2 Template ○ Suporte a cookies ● Possui Web Server interno apenas para desenvolvimento ● Compatível 100% com WSGI ● Extenções ○ Admin ○ Cache ○ Gerenciador de sessão ○ Internacionalização ○ ORM ○ OAuth
Bottle ● Micro Framework ○ Routing ○ Templates (Jinja2, Mako e Cheeta) ○ Suporte a Cookies, File Upload ● Possui Web Server interno apenas para desenvolvimento ● Compatível com WSGI ● Arquivo único (.py) ● Sem dependências externas
NumPy ● Pacote essencial para computação científica ● Sofisticado Array N-dimensional ● Integração com C/C++ e Fortran ● Cálculos ○ Álgebra Linear ○ Transformada de Fourier ○ Random Numbers
SciPy ● Pacote para matemática, ciência e engenharia ● Depende do NumPy ● Vários módulos ○ Estatística ○ Otimização ○ Integração ○ Álgebra Linear ○ Transformada de Fourier ○ Processamento de imagens e sinais ○ ODE Solver
Pandas ● Análise de dados e modelagem ● Ferramentas para leitura e gravação de estruturas de dados ○ CSV ○ Arquivos de texto ○ Microsoft Excel ○ Bancos SQL ○ HDF5 ● Alternativa a linguagem R
scikit-learn ● Ferramentas para mineração e análise de dados ● Baseado no NumPy, SciPy e Matplotlib ● Inclui vários algoritmos ○ Classificasão ○ Regressão ○ Clustering ○ Support Vector Machine ○ Random Forest ○ K-Means ● Popular no aprendizado de Machine Learning ● Sem suporte a GPUs
TensorFlow ● Machine Learning e Deep Leaning para pesquisa e produção ● Suporte a CPUs, GPUs e TPUs ● Desenvolvido e mantido pelo Google ● Suporte a XLA (Accelerated Linear Algebra) ○ Compilador de Álgebra Linear que otimiza cálculos ● APIs de alto nível
PyTorch ● Framework de Deep Learning ● Baseado no Torch (Lua) ● NumPy like que roda em GPUs ● Comumente utilizado para NLP ● Suporte a CPUs e GPUs ● Desenvolvido pelo Facebook
Theano ● Biblioteca de computação numérica ○ Define, otimiza e calcula expressões matemáticas ● Integração com NumPy ● Usa GPU para cálculos ● Desenvolvida pelo MILA ● Suporte descontinuado
Caffe ● Framework de Deep Learning ● Desenvolvido pela Berkeley Artificial Intelligence Research (BAIR) ● Modular ● Rápido ○ Processa 60M de imagens por dia em uma única NVIDIA K40 ● Suporte a diferentes tipos de arquiteturas ○ CNN ○ RCNN ○ LSTM ○ FC NN ● Escrito em C++ com interface em Python
OpenCV ● Focada em aplicações de tempo real ● Suporte a OpenCL e CUDA ● Desenvolvida pela Intel ● Escrito em C++ com interface em Python ● Principais módulos ○ Processamento de Images ○ Processamento de Vídeos ○ Estrutura de dados ○ Álgebra Linear ○ GUI ● Multi plataforma
scikit-image ● Coleção de algoritmos para processamento de imagens ○ Segmentação ○ Transformações geométricas ○ Manipulação de Color Space ○ Análise ○ Filtros ○ Morfologia ○ Feature Detection ○ E mais ● Escrito em Python, Cython e C
Jupyter Notebook ● Editor web com várias funcionalidades ● Suporta as linguagens de programação dos cientistas de dados ○ Julia ○ Python ○ R ○ Scala ○ Entre outras ● Permite rodar código no browser ● Suporte a equações, visualizações e narração de textos ● Integração com Spark