66

Click here to load reader

Python para devs

Embed Size (px)

DESCRIPTION

Palestra feita no 3º encontro do DevInSantos. Fiz uma introdução da linguagem Python para quem já desenvolve em outras linguagens.

Citation preview

Page 1: Python para devs

Python para DevsEvaldo Junior

(1.0 beta)

05/05/2012

Page 2: Python para devs

Licenciamento desta apresentaçãoCreative Commons

BY-NC-SACompartilhe - Mantenha a licença - Não comercial

Page 3: Python para devs

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

Python

Page 5: Python para devs

Python

• Pronuncia-se "Paiton"

• Não é "pitón"

• Não é "faiton"

• Sem ligação com cobras!

• Monty Python!

Page 6: Python para devs

Por que Python?

Page 7: Python para devs

Qualidade de Software

Page 8: Python para devs

Qualidade de Software

Produtividade

Page 9: Python para devs

Qualidade de Software

Produtividade

Portabilidade

Page 10: Python para devs

Qualidade de Software

Produtividade

PortabilidadeInúmeras bibliotecas

Page 11: Python para devs

Qualidade de Software

Integração com outras linguagens

Produtividade

PortabilidadeInúmeras bibliotecas

Page 12: Python para devs

Qualidade de Software

Livre!

Integração com outras linguagens

Produtividade

PortabilidadeInúmeras bibliotecas

Page 13: Python para devs

Qualidade de Software

Diversão!Livre!

Integração com outras linguagens

Produtividade

PortabilidadeInúmeras bibliotecas

Page 14: Python para devs

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

A linguagem Python

Poderosa!

Page 16: Python para devs

A linguagem Python

Poderosa!

Multiparadigma

Page 17: Python para devs

A linguagem Python

Poderosa!

Multiparadigma Multifuncional

Page 18: Python para devs

A linguagem Python

Poderosa!

Multiparadigma Multifuncional

Multiplataforma

Page 19: Python para devs

A linguagem Python

Poderosa!

Multiparadigma Multifuncional

Multiplataforma

Fácil de aprender

Page 20: Python para devs

A linguagem Python

Poderosa...e

rápida!

Multiparadigma Multifuncional

Multiplataforma

Fácil de aprender

Page 21: Python para devs

A linguagem Python

• Poderosa... E rápida!

Baterias incluídas

Page 22: Python para devs

A linguagem Python

• Poderosa... E rápida!

Baterias incluídas

WEB

Page 23: Python para devs

A linguagem Python

• Poderosa... E rápida!

Baterias incluídas

WEB Desktop

Page 24: Python para devs

A linguagem Python

• Poderosa... E rápida!

Baterias incluídas

WEBDatabase

Desktop

Page 25: Python para devs

• Poderosa... E rápida!

A linguagem Python

Baterias incluídas

WEBDatabase

Científica

Desktop

Page 26: Python para devs

A linguagem Python

• Poderosa... E rápida!

Baterias incluídas

WEBDatabase

Científica

Network

Desktop

Page 27: Python para devs

A linguagem Python

• Poderosa... E rápida!

Baterias incluídas

WEBDatabase

CientíficaGames

Network

Desktop

Page 28: Python para devs

A linguagem Python

• Poderosa... E rápida!

• Baterias incluídas

Meta classes, decoratorsDuck typing

Page 29: Python para devs

Talking is cheap, show me the code!

Page 30: Python para devs

Duc

k Ty

ping

Page 31: Python para devs

Blocos sãoi[n]dentados!

Page 32: Python para devs

A linguagem Python

• Poderosa... E rápida!

• Baterias incluídas

• Meta classes, decorators, Duck typing

Escreva rápido!

Page 33: Python para devs

Feed RSS

Page 34: Python para devs

Resultado

Page 35: Python para devs

A linguagem Python

• Poderosa... E rápida!

• Baterias incluídas

• Meta classes, decorators, Duck typing

• Escreva rápido!

Interpretadorinterativo!

Page 36: Python para devs

Interpretador interativo

Page 37: Python para devs

Tipagem dinâmica, não fraca!

• Não existe declaração de tipos

Mas os tipos existem!

Page 38: Python para devs

exemplo...

2 + 2 = 4'2' + '2' = '22'

2 + '2' = TypeError

Page 39: Python para devs

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

Ótimo tratamento de erros

Page 41: Python para devs

Parâmetros nomeados

Page 42: Python para devs

Decorators

• Especifica uma maneira de gerir funções e classes

• Organização

• Centralização

Page 43: Python para devs

Decorators

Page 44: Python para devs

Decorators

Page 45: Python para devs

Decorators - Django

Page 46: Python para devs

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

Namespaces

fun1 fun2

Page 48: Python para devs

OOP

Page 49: Python para devs

OOP

Herança multipla

Page 50: Python para devs

OOP

Classes abstratas

Herança multipla

Page 51: Python para devs

OOP

Sem sobrecarga de métodos

Herança multipla

Classes abstratas

Page 52: Python para devs

OOP

Não existem tipos primitivos

Herança multipla

Sem sobrecarga de métodos

Classes abstratas

Page 53: Python para devs

OOP

TUDO é objeto

Herança multipla

Não existem tipos primitivos

Sem sobrecarga de métodos

Classes abstratas

Page 54: Python para devs

OOP!

5.45.__int__()

5 (parte inteira do número)

Page 55: Python para devs

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

OOP: self

Page 57: Python para devs

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

Visibilidades

• Não existe operador de visibilidade!

• Nada de public

• Nada de protected

• Nada de private

Page 59: Python para devs

Visibilidades, como faz?

• public = sem prefixos

• protected = prefixo "_"

• private = prefixo "__"

o two underlineso two undero thunder

Page 60: Python para devs

Visibilidades, funciona?

Um grande acordo entre cavalheiros.

Coisas ruins acontecem com quem não respeita o padrão.

Page 61: Python para devs

O que fazer com tudo isso?

Page 62: Python para devs

Quem usa Python?

Mais de um milhão de desenvolvedores!

Page 63: Python para devs

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

Dúvidas?

Page 65: Python para devs
Page 66: Python para devs