python para devs

Post on 11-Jun-2015

994 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

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