python para devs

66

Click here to load reader

Upload: evaldo-junior

Post on 11-Jun-2015

993 views

Category:

Technology


0 download

DESCRIPTION

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

TRANSCRIPT

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