python para devs
Post on 11-Jun-2015
994 Views
Preview:
DESCRIPTION
TRANSCRIPT
Python para DevsEvaldo Junior
(1.0 beta)
05/05/2012
Licenciamento desta apresentaçãoCreative Commons
BY-NC-SACompartilhe - Mantenha a licença - Não comercial
Evaldo Junior - InFog
• Processamento de dados - Fatec
• MBA Gestão Estratégica de TI - Unimonte
• Professor universitário - Unimonte
• Empreendedor - CaSoft
• GNU/Linux - 7 anos
• Desenvolvedor - 5 anos
Python
Python
• Pronuncia-se "Paiton"
• Não é "pitón"
• Não é "faiton"
• Sem ligação com cobras!
• Monty Python!
Por que Python?
Qualidade de Software
Qualidade de Software
Produtividade
Qualidade de Software
Produtividade
Portabilidade
Qualidade de Software
Produtividade
PortabilidadeInúmeras bibliotecas
Qualidade de Software
Integração com outras linguagens
Produtividade
PortabilidadeInúmeras bibliotecas
Qualidade de Software
Livre!
Integração com outras linguagens
Produtividade
PortabilidadeInúmeras bibliotecas
Qualidade de Software
Diversão!Livre!
Integração com outras linguagens
Produtividade
PortabilidadeInúmeras bibliotecas
Um pouco de história...
• Guido van Rossum
• 1989 - 1991
• Foco em produtividade
• 1994 - Funcionalo lambda
• 2.0 - list compreensiono haskell
• 3.0 - grandes mudanças
A linguagem Python
Poderosa!
A linguagem Python
Poderosa!
Multiparadigma
A linguagem Python
Poderosa!
Multiparadigma Multifuncional
A linguagem Python
Poderosa!
Multiparadigma Multifuncional
Multiplataforma
A linguagem Python
Poderosa!
Multiparadigma Multifuncional
Multiplataforma
Fácil de aprender
A linguagem Python
Poderosa...e
rápida!
Multiparadigma Multifuncional
Multiplataforma
Fácil de aprender
A linguagem Python
• Poderosa... E rápida!
Baterias incluídas
A linguagem Python
• Poderosa... E rápida!
Baterias incluídas
WEB
A linguagem Python
• Poderosa... E rápida!
Baterias incluídas
WEB Desktop
A linguagem Python
• Poderosa... E rápida!
Baterias incluídas
WEBDatabase
Desktop
• Poderosa... E rápida!
A linguagem Python
Baterias incluídas
WEBDatabase
Científica
Desktop
A linguagem Python
• Poderosa... E rápida!
Baterias incluídas
WEBDatabase
Científica
Network
Desktop
A linguagem Python
• Poderosa... E rápida!
Baterias incluídas
WEBDatabase
CientíficaGames
Network
Desktop
A linguagem Python
• Poderosa... E rápida!
• Baterias incluídas
Meta classes, decoratorsDuck typing
Talking is cheap, show me the code!
Duc
k Ty
ping
Blocos sãoi[n]dentados!
A linguagem Python
• Poderosa... E rápida!
• Baterias incluídas
• Meta classes, decorators, Duck typing
Escreva rápido!
Feed RSS
Resultado
A linguagem Python
• Poderosa... E rápida!
• Baterias incluídas
• Meta classes, decorators, Duck typing
• Escreva rápido!
Interpretadorinterativo!
Interpretador interativo
Tipagem dinâmica, não fraca!
• Não existe declaração de tipos
Mas os tipos existem!
exemplo...
2 + 2 = 4'2' + '2' = '22'
2 + '2' = TypeError
Tipagem dinâmica, não fraca!
• Não existe declaração de tipos
• Sem conversão automática de tipos
4 * 'spam'
'spamspamspamspam'
Ótimo tratamento de erros
Parâmetros nomeados
Decorators
• Especifica uma maneira de gerir funções e classes
• Organização
• Centralização
Decorators
Decorators
Decorators - Django
Namespaces
• Baseados em arquivos ou módulos
• Use apenas se necessário
• Ótima forma de organização e modularização
Namespaces
fun1 fun2
OOP
OOP
Herança multipla
OOP
Classes abstratas
Herança multipla
OOP
Sem sobrecarga de métodos
Herança multipla
Classes abstratas
OOP
Não existem tipos primitivos
Herança multipla
Sem sobrecarga de métodos
Classes abstratas
OOP
TUDO é objeto
Herança multipla
Não existem tipos primitivos
Sem sobrecarga de métodos
Classes abstratas
OOP!
5.45.__int__()
5 (parte inteira do número)
OOP: self
• Todos os métodos, de quaisquer métodos, recebem o self
• self é uma referência do objeto instanciado.
• self é sempre o primeiro parâmetro, e é automático.
OOP: self
Convenções para OOP
• Todos herdam de "object"
• Contrutores se chamam __new__o Nunca vi um construtor...
• Inicializadores de chamam __init__o Esses sim, tem aos montes por aío Na verdade o __init__ é o que as outras linguagens
usam como "construtor"
• __init__ recebe uma instância pronta, para incializar os atributos.
• __new__ é usada raramente, mais para metaprogramação.
Visibilidades
• Não existe operador de visibilidade!
• Nada de public
• Nada de protected
• Nada de private
Visibilidades, como faz?
• public = sem prefixos
• protected = prefixo "_"
• private = prefixo "__"
o two underlineso two undero thunder
Visibilidades, funciona?
Um grande acordo entre cavalheiros.
Coisas ruins acontecem com quem não respeita o padrão.
O que fazer com tudo isso?
Quem usa Python?
Mais de um milhão de desenvolvedores!
Mais informações
• http://python.org
• http://python.org.br
• http://python.org/doc
• Learning Python - Mark Lutz
• Python para Desenvolvedoreso Luiz Eduardo Borges
Dúvidas?
top related