canivete suíço do python

35
O Canivete Suíço do Python Douglas Soares de Andrade

Upload: douglas-soares-de-andrade

Post on 18-Dec-2014

2.953 views

Category:

Technology


5 download

DESCRIPTION

Slides da Palestra "Canivete suíço do Python" no FISL12.

TRANSCRIPT

Page 1: Canivete suíço do Python

O Canivete Suíço do Python

Douglas Soares de Andrade

Page 2: Canivete suíço do Python
Page 3: Canivete suíço do Python

O Canivete Suíço do Python

● Introdução● Sobre a palestra● O que é Python ?● Quem usa ?● Convenções utilizadas na palestra● Baterias inclusas

Conteúdo da Apresentação

Page 4: Canivete suíço do Python

O Canivete Suíço do Python

● Desenvolvedor na Dataprev● Python● Zope e Plone● PHP (wordpress, drupal)

Introdução (Douglas)

● Participante de vários projetos de SL● Archlinux (Desenvolvedor, TU, Mantenedor de pacotes)● Web2py● Plone Collective

● Py (ops, pai) de três lindas crianças =)

Page 5: Canivete suíço do Python

O Canivete Suíço do Python

E vocês ?

● Quem já ouviu falar em Python ?

“Será que dá pra fazer isso melhor ?!”

● Alguém trabalha com desenvolvimento de sistemas ?

● Alguém trabalha com Python ?

● Alguém já viu algum código Python e pensou: (pra não dizer outra coisa)

Page 6: Canivete suíço do Python

O Canivete Suíço do Python

Sobre a palestra

● Além de tudo, é uma palestra sobre...

● Não é um mão-na-massa de Python

● Não é uma batalha de pythonismos

● Exemplos simples, concisos e didáticos

● Baterias inclusas

Page 7: Canivete suíço do Python

O Canivete Suíço do Python

“Não perguntar o que você pode fazer por Python, mas sim o que Python pode fazer por você.”

Page 8: Canivete suíço do Python

O Canivete Suíço do Python

● Iniciada em 1990 por Guido Van Rossum no CWI para ser a linguagem de script do sistema operacional distribuído AMOEBA.● Inspirada pela linguagem ABC, criada também no CWI, que era uma linguagem de programação para usuários avançados em computação mas que não eram programadores.● Nome vem do grupo humorístico Monty Python, do qual Guido é fan

O que é Python ?

Page 9: Canivete suíço do Python

O Canivete Suíço do Python

● Pode ser usada interativamente● Tipos de dados básicos poderosos● Baterias Inclusas● Software Livre● Os blocos são controlados por indentação● Tudo é objeto● É simples e transparente● Ajuda o programador● Comunidade de programadores apaixonados

Muito prazer, meu nome é Python

Page 10: Canivete suíço do Python

O Canivete Suíço do Python

>>> Interpretador de Python... Bloco lógico

$ Indica que o comando foi executado em um shell

Convenções utilizadas

Page 11: Canivete suíço do Python

O Canivete Suíço do Python

Baterias Inclusas(E algumas dicas legais)

Page 12: Canivete suíço do Python

O Canivete Suíço do Python

Básico - Strings

Adicionar zeros a uma string numérica:

Page 13: Canivete suíço do Python

O Canivete Suíço do Python

Básico - Strings

Trocar caracteres de um texto:

Page 14: Canivete suíço do Python

O Canivete Suíço do Python

Básico - Strings

Trocar caracteres de um texto:

Page 15: Canivete suíço do Python

O Canivete Suíço do Python

Básico - Strings

BONUS POINTS !!! Trocar caracteres de um texto:

Page 16: Canivete suíço do Python

O Canivete Suíço do Python

Básico - Strings

Substituições de textos maiores:

Page 17: Canivete suíço do Python

O Canivete Suíço do Python

Básico - Strings

Substituições de textos maiores:

Page 18: Canivete suíço do Python

O Canivete Suíço do Python

Básico - Números

Validar se um valor é numérico:

Page 19: Canivete suíço do Python

O Canivete Suíço do Python

Básico - Números

Frações:

BONUS POINTS ! Divisão:

Page 20: Canivete suíço do Python

O Canivete Suíço do Python

Básico - Sets

Retornar os valores únicos de uma lista de elementos:

Page 21: Canivete suíço do Python

O Canivete Suíço do Python

Collections - CounterContainer que mantém um controle de quantas vezes um elemento equivalente foi adicionado

Page 22: Canivete suíço do Python

O Canivete Suíço do Python

Collections - NamedtupleFacilita o acesso a elementos de uma tupla, permitindo a atribuição de um nome para os atributos

Page 23: Canivete suíço do Python

O Canivete Suíço do Python

CollectionsNamedtuple

Page 24: Canivete suíço do Python

O Canivete Suíço do Python

Collections - ordereddictDicionários que 'sabem' a ordem em que seus elementos foram inseridos

Page 25: Canivete suíço do Python

O Canivete Suíço do Python

Collections - ordereddictDicionários que 'sabem' a ordem em que seus elementos foram inseridos

Page 26: Canivete suíço do Python

O Canivete Suíço do Python

GeraisGenerator e Set expressions (dica de performance)

Page 27: Canivete suíço do Python

O Canivete Suíço do Python

Gerais - Any

Testar se ao menos um dos elementos satisfaz determinada condição

Page 28: Canivete suíço do Python

O Canivete Suíço do Python

Gerais - textwrap

Ajuda a manter a sanidade de stringscom aspas triplas

Page 29: Canivete suíço do Python

O Canivete Suíço do Python

Gerais - textwrap

Ajuda a manter a sanidade de stringscom aspas triplas

Page 30: Canivete suíço do Python

O Canivete Suíço do Python

Gerais - cmd

Processador de comandos simples

Page 31: Canivete suíço do Python

O Canivete Suíço do Python

Gerais

Servir arquivos de um diretório da máquina

Page 32: Canivete suíço do Python

O Canivete Suíço do Python

Gerais

Auto completar no terminal (sem ipython)

Page 33: Canivete suíço do Python

O Canivete Suíço do Python

O que é interessante, mas fica pra próxima● Aspectos funcionais de Python

● map● filter● reduce● lambda

● Outros módulos que vocês devem checar● Itertools (Ferramentas para trabalhar com iteráveis)● Functools (Ferramentas para trabalhar com funções para adapta-las ou extende-

las)● Documentação do comando set (tem muita coisa bacana lá)● Serialização: json e cPickle● pprint: Imprimir estruturas de dados de modo elegante

● Módulos e programas fora da stdlib que são sensacionais● ipython● bpython● see● ...

Page 34: Canivete suíço do Python

O Canivete Suíço do Python

Page 35: Canivete suíço do Python

O Canivete Suíço do Python

Contato:

Douglas Soares de AndradeEmail : [email protected]: @douglasandradeGithub: @dsarch

Muito Obrigado =)