Python para devs
Click here to load reader
-
Upload
evaldo-junior -
Category
Technology
-
view
987 -
download
0
description
Transcript of Python para devs
![Page 1: Python para devs](https://reader037.fdocumentos.tips/reader037/viewer/2022100221/55799e17d8b42ac1148b4616/html5/thumbnails/1.jpg)
Python para DevsEvaldo Junior
(1.0 beta)
05/05/2012
![Page 2: Python para devs](https://reader037.fdocumentos.tips/reader037/viewer/2022100221/55799e17d8b42ac1148b4616/html5/thumbnails/2.jpg)
Licenciamento desta apresentaçãoCreative Commons
BY-NC-SACompartilhe - Mantenha a licença - Não comercial
![Page 3: Python para devs](https://reader037.fdocumentos.tips/reader037/viewer/2022100221/55799e17d8b42ac1148b4616/html5/thumbnails/3.jpg)
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
![Page 4: Python para devs](https://reader037.fdocumentos.tips/reader037/viewer/2022100221/55799e17d8b42ac1148b4616/html5/thumbnails/4.jpg)
Python
![Page 5: Python para devs](https://reader037.fdocumentos.tips/reader037/viewer/2022100221/55799e17d8b42ac1148b4616/html5/thumbnails/5.jpg)
Python
• Pronuncia-se "Paiton"
• Não é "pitón"
• Não é "faiton"
• Sem ligação com cobras!
• Monty Python!
![Page 6: Python para devs](https://reader037.fdocumentos.tips/reader037/viewer/2022100221/55799e17d8b42ac1148b4616/html5/thumbnails/6.jpg)
Por que Python?
![Page 7: Python para devs](https://reader037.fdocumentos.tips/reader037/viewer/2022100221/55799e17d8b42ac1148b4616/html5/thumbnails/7.jpg)
Qualidade de Software
![Page 8: Python para devs](https://reader037.fdocumentos.tips/reader037/viewer/2022100221/55799e17d8b42ac1148b4616/html5/thumbnails/8.jpg)
Qualidade de Software
Produtividade
![Page 9: Python para devs](https://reader037.fdocumentos.tips/reader037/viewer/2022100221/55799e17d8b42ac1148b4616/html5/thumbnails/9.jpg)
Qualidade de Software
Produtividade
Portabilidade
![Page 10: Python para devs](https://reader037.fdocumentos.tips/reader037/viewer/2022100221/55799e17d8b42ac1148b4616/html5/thumbnails/10.jpg)
Qualidade de Software
Produtividade
PortabilidadeInúmeras bibliotecas
![Page 11: Python para devs](https://reader037.fdocumentos.tips/reader037/viewer/2022100221/55799e17d8b42ac1148b4616/html5/thumbnails/11.jpg)
Qualidade de Software
Integração com outras linguagens
Produtividade
PortabilidadeInúmeras bibliotecas
![Page 12: Python para devs](https://reader037.fdocumentos.tips/reader037/viewer/2022100221/55799e17d8b42ac1148b4616/html5/thumbnails/12.jpg)
Qualidade de Software
Livre!
Integração com outras linguagens
Produtividade
PortabilidadeInúmeras bibliotecas
![Page 13: Python para devs](https://reader037.fdocumentos.tips/reader037/viewer/2022100221/55799e17d8b42ac1148b4616/html5/thumbnails/13.jpg)
Qualidade de Software
Diversão!Livre!
Integração com outras linguagens
Produtividade
PortabilidadeInúmeras bibliotecas
![Page 14: Python para devs](https://reader037.fdocumentos.tips/reader037/viewer/2022100221/55799e17d8b42ac1148b4616/html5/thumbnails/14.jpg)
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
![Page 15: Python para devs](https://reader037.fdocumentos.tips/reader037/viewer/2022100221/55799e17d8b42ac1148b4616/html5/thumbnails/15.jpg)
A linguagem Python
Poderosa!
![Page 16: Python para devs](https://reader037.fdocumentos.tips/reader037/viewer/2022100221/55799e17d8b42ac1148b4616/html5/thumbnails/16.jpg)
A linguagem Python
Poderosa!
Multiparadigma
![Page 17: Python para devs](https://reader037.fdocumentos.tips/reader037/viewer/2022100221/55799e17d8b42ac1148b4616/html5/thumbnails/17.jpg)
A linguagem Python
Poderosa!
Multiparadigma Multifuncional
![Page 18: Python para devs](https://reader037.fdocumentos.tips/reader037/viewer/2022100221/55799e17d8b42ac1148b4616/html5/thumbnails/18.jpg)
A linguagem Python
Poderosa!
Multiparadigma Multifuncional
Multiplataforma
![Page 19: Python para devs](https://reader037.fdocumentos.tips/reader037/viewer/2022100221/55799e17d8b42ac1148b4616/html5/thumbnails/19.jpg)
A linguagem Python
Poderosa!
Multiparadigma Multifuncional
Multiplataforma
Fácil de aprender
![Page 20: Python para devs](https://reader037.fdocumentos.tips/reader037/viewer/2022100221/55799e17d8b42ac1148b4616/html5/thumbnails/20.jpg)
A linguagem Python
Poderosa...e
rápida!
Multiparadigma Multifuncional
Multiplataforma
Fácil de aprender
![Page 21: Python para devs](https://reader037.fdocumentos.tips/reader037/viewer/2022100221/55799e17d8b42ac1148b4616/html5/thumbnails/21.jpg)
A linguagem Python
• Poderosa... E rápida!
Baterias incluídas
![Page 22: Python para devs](https://reader037.fdocumentos.tips/reader037/viewer/2022100221/55799e17d8b42ac1148b4616/html5/thumbnails/22.jpg)
A linguagem Python
• Poderosa... E rápida!
Baterias incluídas
WEB
![Page 23: Python para devs](https://reader037.fdocumentos.tips/reader037/viewer/2022100221/55799e17d8b42ac1148b4616/html5/thumbnails/23.jpg)
A linguagem Python
• Poderosa... E rápida!
Baterias incluídas
WEB Desktop
![Page 24: Python para devs](https://reader037.fdocumentos.tips/reader037/viewer/2022100221/55799e17d8b42ac1148b4616/html5/thumbnails/24.jpg)
A linguagem Python
• Poderosa... E rápida!
Baterias incluídas
WEBDatabase
Desktop
![Page 25: Python para devs](https://reader037.fdocumentos.tips/reader037/viewer/2022100221/55799e17d8b42ac1148b4616/html5/thumbnails/25.jpg)
• Poderosa... E rápida!
A linguagem Python
Baterias incluídas
WEBDatabase
Científica
Desktop
![Page 26: Python para devs](https://reader037.fdocumentos.tips/reader037/viewer/2022100221/55799e17d8b42ac1148b4616/html5/thumbnails/26.jpg)
A linguagem Python
• Poderosa... E rápida!
Baterias incluídas
WEBDatabase
Científica
Network
Desktop
![Page 27: Python para devs](https://reader037.fdocumentos.tips/reader037/viewer/2022100221/55799e17d8b42ac1148b4616/html5/thumbnails/27.jpg)
A linguagem Python
• Poderosa... E rápida!
Baterias incluídas
WEBDatabase
CientíficaGames
Network
Desktop
![Page 28: Python para devs](https://reader037.fdocumentos.tips/reader037/viewer/2022100221/55799e17d8b42ac1148b4616/html5/thumbnails/28.jpg)
A linguagem Python
• Poderosa... E rápida!
• Baterias incluídas
Meta classes, decoratorsDuck typing
![Page 29: Python para devs](https://reader037.fdocumentos.tips/reader037/viewer/2022100221/55799e17d8b42ac1148b4616/html5/thumbnails/29.jpg)
Talking is cheap, show me the code!
![Page 30: Python para devs](https://reader037.fdocumentos.tips/reader037/viewer/2022100221/55799e17d8b42ac1148b4616/html5/thumbnails/30.jpg)
Duc
k Ty
ping
![Page 31: Python para devs](https://reader037.fdocumentos.tips/reader037/viewer/2022100221/55799e17d8b42ac1148b4616/html5/thumbnails/31.jpg)
Blocos sãoi[n]dentados!
![Page 32: Python para devs](https://reader037.fdocumentos.tips/reader037/viewer/2022100221/55799e17d8b42ac1148b4616/html5/thumbnails/32.jpg)
A linguagem Python
• Poderosa... E rápida!
• Baterias incluídas
• Meta classes, decorators, Duck typing
Escreva rápido!
![Page 33: Python para devs](https://reader037.fdocumentos.tips/reader037/viewer/2022100221/55799e17d8b42ac1148b4616/html5/thumbnails/33.jpg)
Feed RSS
![Page 34: Python para devs](https://reader037.fdocumentos.tips/reader037/viewer/2022100221/55799e17d8b42ac1148b4616/html5/thumbnails/34.jpg)
Resultado
![Page 35: Python para devs](https://reader037.fdocumentos.tips/reader037/viewer/2022100221/55799e17d8b42ac1148b4616/html5/thumbnails/35.jpg)
A linguagem Python
• Poderosa... E rápida!
• Baterias incluídas
• Meta classes, decorators, Duck typing
• Escreva rápido!
Interpretadorinterativo!
![Page 36: Python para devs](https://reader037.fdocumentos.tips/reader037/viewer/2022100221/55799e17d8b42ac1148b4616/html5/thumbnails/36.jpg)
Interpretador interativo
![Page 37: Python para devs](https://reader037.fdocumentos.tips/reader037/viewer/2022100221/55799e17d8b42ac1148b4616/html5/thumbnails/37.jpg)
Tipagem dinâmica, não fraca!
• Não existe declaração de tipos
Mas os tipos existem!
![Page 38: Python para devs](https://reader037.fdocumentos.tips/reader037/viewer/2022100221/55799e17d8b42ac1148b4616/html5/thumbnails/38.jpg)
exemplo...
2 + 2 = 4'2' + '2' = '22'
2 + '2' = TypeError
![Page 39: Python para devs](https://reader037.fdocumentos.tips/reader037/viewer/2022100221/55799e17d8b42ac1148b4616/html5/thumbnails/39.jpg)
Tipagem dinâmica, não fraca!
• Não existe declaração de tipos
• Sem conversão automática de tipos
4 * 'spam'
'spamspamspamspam'
![Page 40: Python para devs](https://reader037.fdocumentos.tips/reader037/viewer/2022100221/55799e17d8b42ac1148b4616/html5/thumbnails/40.jpg)
Ótimo tratamento de erros
![Page 41: Python para devs](https://reader037.fdocumentos.tips/reader037/viewer/2022100221/55799e17d8b42ac1148b4616/html5/thumbnails/41.jpg)
Parâmetros nomeados
![Page 42: Python para devs](https://reader037.fdocumentos.tips/reader037/viewer/2022100221/55799e17d8b42ac1148b4616/html5/thumbnails/42.jpg)
Decorators
• Especifica uma maneira de gerir funções e classes
• Organização
• Centralização
![Page 43: Python para devs](https://reader037.fdocumentos.tips/reader037/viewer/2022100221/55799e17d8b42ac1148b4616/html5/thumbnails/43.jpg)
Decorators
![Page 44: Python para devs](https://reader037.fdocumentos.tips/reader037/viewer/2022100221/55799e17d8b42ac1148b4616/html5/thumbnails/44.jpg)
Decorators
![Page 45: Python para devs](https://reader037.fdocumentos.tips/reader037/viewer/2022100221/55799e17d8b42ac1148b4616/html5/thumbnails/45.jpg)
Decorators - Django
![Page 46: Python para devs](https://reader037.fdocumentos.tips/reader037/viewer/2022100221/55799e17d8b42ac1148b4616/html5/thumbnails/46.jpg)
Namespaces
• Baseados em arquivos ou módulos
• Use apenas se necessário
• Ótima forma de organização e modularização
![Page 47: Python para devs](https://reader037.fdocumentos.tips/reader037/viewer/2022100221/55799e17d8b42ac1148b4616/html5/thumbnails/47.jpg)
Namespaces
fun1 fun2
![Page 48: Python para devs](https://reader037.fdocumentos.tips/reader037/viewer/2022100221/55799e17d8b42ac1148b4616/html5/thumbnails/48.jpg)
OOP
![Page 49: Python para devs](https://reader037.fdocumentos.tips/reader037/viewer/2022100221/55799e17d8b42ac1148b4616/html5/thumbnails/49.jpg)
OOP
Herança multipla
![Page 50: Python para devs](https://reader037.fdocumentos.tips/reader037/viewer/2022100221/55799e17d8b42ac1148b4616/html5/thumbnails/50.jpg)
OOP
Classes abstratas
Herança multipla
![Page 51: Python para devs](https://reader037.fdocumentos.tips/reader037/viewer/2022100221/55799e17d8b42ac1148b4616/html5/thumbnails/51.jpg)
OOP
Sem sobrecarga de métodos
Herança multipla
Classes abstratas
![Page 52: Python para devs](https://reader037.fdocumentos.tips/reader037/viewer/2022100221/55799e17d8b42ac1148b4616/html5/thumbnails/52.jpg)
OOP
Não existem tipos primitivos
Herança multipla
Sem sobrecarga de métodos
Classes abstratas
![Page 53: Python para devs](https://reader037.fdocumentos.tips/reader037/viewer/2022100221/55799e17d8b42ac1148b4616/html5/thumbnails/53.jpg)
OOP
TUDO é objeto
Herança multipla
Não existem tipos primitivos
Sem sobrecarga de métodos
Classes abstratas
![Page 54: Python para devs](https://reader037.fdocumentos.tips/reader037/viewer/2022100221/55799e17d8b42ac1148b4616/html5/thumbnails/54.jpg)
OOP!
5.45.__int__()
5 (parte inteira do número)
![Page 55: Python para devs](https://reader037.fdocumentos.tips/reader037/viewer/2022100221/55799e17d8b42ac1148b4616/html5/thumbnails/55.jpg)
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.
![Page 56: Python para devs](https://reader037.fdocumentos.tips/reader037/viewer/2022100221/55799e17d8b42ac1148b4616/html5/thumbnails/56.jpg)
OOP: self
![Page 57: Python para devs](https://reader037.fdocumentos.tips/reader037/viewer/2022100221/55799e17d8b42ac1148b4616/html5/thumbnails/57.jpg)
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.
![Page 58: Python para devs](https://reader037.fdocumentos.tips/reader037/viewer/2022100221/55799e17d8b42ac1148b4616/html5/thumbnails/58.jpg)
Visibilidades
• Não existe operador de visibilidade!
• Nada de public
• Nada de protected
• Nada de private
![Page 59: Python para devs](https://reader037.fdocumentos.tips/reader037/viewer/2022100221/55799e17d8b42ac1148b4616/html5/thumbnails/59.jpg)
Visibilidades, como faz?
• public = sem prefixos
• protected = prefixo "_"
• private = prefixo "__"
o two underlineso two undero thunder
![Page 60: Python para devs](https://reader037.fdocumentos.tips/reader037/viewer/2022100221/55799e17d8b42ac1148b4616/html5/thumbnails/60.jpg)
Visibilidades, funciona?
Um grande acordo entre cavalheiros.
Coisas ruins acontecem com quem não respeita o padrão.
![Page 61: Python para devs](https://reader037.fdocumentos.tips/reader037/viewer/2022100221/55799e17d8b42ac1148b4616/html5/thumbnails/61.jpg)
O que fazer com tudo isso?
![Page 62: Python para devs](https://reader037.fdocumentos.tips/reader037/viewer/2022100221/55799e17d8b42ac1148b4616/html5/thumbnails/62.jpg)
Quem usa Python?
Mais de um milhão de desenvolvedores!
![Page 63: Python para devs](https://reader037.fdocumentos.tips/reader037/viewer/2022100221/55799e17d8b42ac1148b4616/html5/thumbnails/63.jpg)
Mais informações
• http://python.org
• http://python.org.br
• http://python.org/doc
• Learning Python - Mark Lutz
• Python para Desenvolvedoreso Luiz Eduardo Borges
![Page 64: Python para devs](https://reader037.fdocumentos.tips/reader037/viewer/2022100221/55799e17d8b42ac1148b4616/html5/thumbnails/64.jpg)
Dúvidas?
![Page 65: Python para devs](https://reader037.fdocumentos.tips/reader037/viewer/2022100221/55799e17d8b42ac1148b4616/html5/thumbnails/65.jpg)
![Page 66: Python para devs](https://reader037.fdocumentos.tips/reader037/viewer/2022100221/55799e17d8b42ac1148b4616/html5/thumbnails/66.jpg)