Você está na página 1de 29

Por que Python?

10 raz
oes para aprender Python

Marco Andre Lopes Mendes <marcoandre@gmail.com>

24 de novembro de 2011

Marco Andr
e Lopes Mendes <marcoandre@gmail.com>

Por que Python?

Uma breve introducao


desse que vos fala

Mestre em Ciencia da Computacao pela UFSC

Professor do Instituto Federal Catarinense

Usuario Unix desde 1992 e Linux desde 1999

Entusiasta de software de c
odigo aberto

Membro da comunidade Python desde 2004

Membro-fundador da Associacao Python Brasil (APyB)

Marco Andr
e Lopes Mendes <marcoandre@gmail.com>

Por que Python?

Uma breve introducao


Sobre a linguagem

Criada por Guido van Rossum em 1991

Origem do nome: grupo de humoristas


Monty Python

Linguagem de altssimo nvel (VHLL)

Sintaxe simples e facil de ser assimilada

Orientada `a objetos, estruturada e funcional

Tipagem forte e dinamica

Multiplataforma

Interpretada

Ambiente interativo

10

Licenca compatvel com a GPL

Marco Andr
e Lopes Mendes <marcoandre@gmail.com>

Por que Python?

1 - Python e legal

arquivo = open ( " emails . txt " )


dominios = {}
for contato in arquivo :
resto , dominio = contato . split ( " @ " )
dominio = dominio . replace ( " \ r \ n " , " " )
if dominio in dominios :
dominios [ dominio ] += 1
else :
dominios [ dominio ] = 1
arquivo . close ()
arquivo = open ( " dominios . txt " , " w " )
for dominio in dominios . keys ():
registro = " % s ;% s \ n " %( dominio , dominios [ dominio ])
arquivo . write ( registro )
arquivo . close ()

Marco Andr
e Lopes Mendes <marcoandre@gmail.com>

Por que Python?

Simples

Legvel

Clara

Simplificada

Sofisticada

Poderosa

2 - Python ja vem com os acessorios

Marco Andr
e Lopes Mendes <marcoandre@gmail.com>

Por que Python?

3 - Python e utilizado la fora

Marco Andr
e Lopes Mendes <marcoandre@gmail.com>

Por que Python?

3 - Python e utilizado la fora

Marco Andr
e Lopes Mendes <marcoandre@gmail.com>

Por que Python?

3 - Python e utilizado la fora

Marco Andr
e Lopes Mendes <marcoandre@gmail.com>

Por que Python?

4 - Python e utilizado aqui dentro


LZT: AutoSystem

Instituto Nokia de Tecnologia

InVesalius
Async: Stoq

Marco Andr
e Lopes Mendes <marcoandre@gmail.com>

Por que Python?

5 - Python e utilizado na web ao redor do mundo

Marco Andr
e Lopes Mendes <marcoandre@gmail.com>

Por que Python?

5 - Python e utilizado na web ao redor do mundo


Diversos frameworks

Marco Andr
e Lopes Mendes <marcoandre@gmail.com>

Por que Python?

6 - Python e utilizado na web aqui no Brasil


globo.com

brasil.gov.br

uiner.com

Marco Andr
e Lopes Mendes <marcoandre@gmail.com>

vericia.com

Por que Python?

6 - Python e utilizado na web aqui no Brasil


certsign.com.br

ucs.br

serpro.gov.br
atepassar.com.br

Marco Andr
e Lopes Mendes <marcoandre@gmail.com>

Por que Python?

7 - Tem emprego para programadores Python


python.org/community/jobs
google.com.br/intl/en/jobs/

empregos.trovitbrasil.com.br/python

Marco Andr
e Lopes Mendes <marcoandre@gmail.com>

twitter.com/python_jobs

Por que Python?

8 - Python conversa com as outras linguagens


C e C++
void initspam ( void );
static PyObject * spam_system ( PyObject * self , PyObject * args );
static PyObject * spam_system ( self , args )
PyObject * self ;
PyObject * args ; {
char * orden ; int sts ;
if (! PyArg_ParseTuple ( args , " s " , & orden ))
return NULL ;
sts = system ( orden );
return Py_BuildValue ( " i " , sts ); }
static PyMethodDef SpamMethods [] = {
{ " system " , spam_system , METH_VARARGS } ,
{ NULL ,
NULL } };
void
initspam (){( void ) Py_InitModule ( " spam " , SpamMethods );}
int main ( int argc , char ** argv ){
P y _ S e tPr ogra mNa me ( argv [0]);
Py_Initialize ();
initspam ();
return 1; }

Marco Andr
e Lopes Mendes <marcoandre@gmail.com>

Por que Python?

8 - Python conversa com as outras linguagens

import javax . swing as libswing


pnumero = libswing . JOptionPane . showInputDialog ( " Digite um Numero Inteiro : " )
snumero = libswing . JOptionPane . showInputDialog ( " Digite um Numero Inteiro : " )
soma = int ( pnumero ) + int ( snumero )
libswing . JOptionPane . s how Mes sage Dia log ( None , " Soma : % d " % soma )

Marco Andr
e Lopes Mendes <marcoandre@gmail.com>

Por que Python?

8 - Python conversa com as outras linguagens

import clr
clr . AddReference ( " System . Windows . Forms " )
from System . Windows . Forms import *
class FormV3 ( Form ):
def __init__ ( self ):
self . Text = Hello World
self . Controls . Add ( Label ( Text = Enter Message : ))
self . txtMessage = TextBox ( Left =100)
self . Controls . Add ( self . txtMessage )
msgButton = Button ( Text = Message , Left =20 , Top =25)
msgButton . Click += self . OnMsgButtonClick
self . Controls . Add ( msgButton )
def O n M s g B uttonClick ( self , * args ):
MessageBox . Show ( self . txtMessage . Text , " Message " )
Application . Run ( FormV3 ())

Marco Andr
e Lopes Mendes <marcoandre@gmail.com>

Por que Python?

8 - Python conversa com as outras linguagens

Marco Andr
e Lopes Mendes <marcoandre@gmail.com>

Por que Python?

9 - Python e multiplataforma

Ate aqui, nada de surpreendente, certo?

Marco Andr
e Lopes Mendes <marcoandre@gmail.com>

Por que Python?

9 - Python e multiplataforma
XO/OLPC
Grande parte do projeto e desenvolvida em Python, incluindo:
1

A interface grafica Sugar

Varias aplicacoes e jogos

O sistema de arquivos

Marco Andr
e Lopes Mendes <marcoandre@gmail.com>

Por que Python?

9 - Python e multiplataforma
Dispositivos m
oveis
Android

Symbian

Marco Andr
e Lopes Mendes <marcoandre@gmail.com>

Iphone

Meego/Maemo

Por que Python?

10 - Python e multiparadigma
Programac
ao Estruturada
import random
def jogaDados ():
dado1 = random . randrange (1 ,7)
dado2 = random . randrange (1 ,7)
somaTemp = dado1 + dado2
print " Jogador tirou % d + % d = % d " %( dado1 , dado2 , somaTemp )
return somaTemp
soma = jogaDados ()
if soma == 7 or soma == 11:
situacaoJogo = " GANHOU "
elif soma == 2 or soma == 3 or soma == 12:
situacaoJogo = " PERDEU "
else :
situacaoJogo = " CONTINUA "
meuPonto = soma
print " Ponto : " , meuPonto
while situacaoJogo == " CONTINUA " :
soma = jogaDados ()
if soma == meuPonto : situacaoJogo = " GANHOU "
elif soma == 7: situacaoJogo = " PERDEU "
if situacaoJogo == " GANHOU " : print " Jogador ganha "
else : print " Jogador perde "

Marco Andr
e Lopes Mendes <marcoandre@gmail.com>

Por que Python?

10 - Python e multiparadigma
Programac
ao Orientada a Objetos
class Fracao ( object ):
def __mdc ( self , m , n ):
if m % n == 0:
return n
else :
return self . __mdc (n , m % n )
def __init__ ( self , numerador , denominador =1):
g = self . __mdc ( numerador , denominador )
self . numerador = numerador / g
self . denominador = denominador / g
def __repr__ ( self ):
return " % d /% d " %( self . numerador ,
self . denominador )
def __mul__ ( self , outro ):
if isinstance ( outro , int ):
outro = Fracao ( outro )
return Fracao ( self . numerador * outro . numerador ,
self . denominador * outro . denominador )
__rmul__ = __mul__

Marco Andr
e Lopes Mendes <marcoandre@gmail.com>

Por que Python?

python -i poo - fracoes . py


>>> a = Fracao (5 ,7)
>>> b = Fracao (3 ,4)
>> r1 = a * b
>>> print r1
15/28
>>> c = Fracao (3 ,5)
>> r2 = a * c
>>> print r2
3/7

10 - Python e multiparadigma
Programac
ao Funcional
# Primos menores que 1000
print filter ( None , map ( lambda y : y * reduce ( lambda x , y : x * y !=0 ,
map ( lambda x , y = y : y %x , range (2 , int ( pow (y ,0.5)+1))) ,1) , range (2 ,1000)))

# F i b o n a c c i : 10 p r i m e i r o s numeros
print map ( lambda x , f = lambda x , f :( x <=1) or ( f (x -1 , f )+ f (x -2 , f )): f (x , f ) ,
range (10))

# C o n j u n t o de M a n d e l b r o t
print ( lambda Ru , Ro , Iu , Io , IM , Sx , Sy : reduce ( lambda x , y : x +y , map ( lambda y ,
Iu = Iu , Io = Io , Ru = Ru , Ro = Ro , Sy = Sy , L = lambda yc , Iu = Iu , Io = Io , Ru = Ru , Ro = Ro , i = IM ,
Sx = Sx , Sy = Sy : reduce ( lambda x , y : x +y , map ( lambda x , xc = Ru , yc = yc , Ru = Ru , Ro = Ro ,
i =i , Sx = Sx , F = lambda xc , yc ,x ,y ,k , f = lambda xc , yc ,x ,y ,k , f :( k <=0) or ( x * x + y * y
>=4.0) or 1+ f ( xc , yc , x *x - y * y + xc ,2.0* x * y + yc ,k -1 , f ): f ( xc , yc ,x ,y ,k , f ): chr (
64+ F ( Ru + x *( Ro - Ru )/ Sx , yc ,0 ,0 , i )) , range ( Sx ))): L ( Iu + y *( Io - Iu )/ Sy ) , range ( Sy
))))( -2.1 , 0.7 , -1.2 , 1.2 , 30 , 80 , 24)

Marco Andr
e Lopes Mendes <marcoandre@gmail.com>

Por que Python?

Bonus 1: 11 - Python e boa como primeira linguagem


aprenda a programar com Python

Experiencia de ensino desde 2004

Varios iniciativas no Brasil e no mundo

MIT copiou nossa ideia :)

Faz bem `a auto-estima do iniciante

Uso pode ser extrapolado para outras materias

Marco Andr
e Lopes Mendes <marcoandre@gmail.com>

Por que Python?

Bonus 2: 12 - Existe uma comunidade forte


voce tem com quem contar

Lista python-brasil: +3650 membros, 500 mensagens/mes.

Associacao Python Brasil: amadurecimento da comunidade

PythonBrasil[7]: Sao Paulo, 400+ participantes

FISL, Latinoware: trilhas de Python

Grupos de Usuarios, PythOn Campus, #horaextra

Marco Andr
e Lopes Mendes <marcoandre@gmail.com>

Por que Python?

Python Brasil[7]
Encontro brasileiro da comunidade Python

Marco Andr
e Lopes Mendes <marcoandre@gmail.com>

Por que Python?

Dorneles Tremea: 1979 - 2011

Marco Andr
e Lopes Mendes <marcoandre@gmail.com>

Por que Python?

Estes slides: slideshare.com/marrcandre

google*: marcoandre@gmail.com

twitter: @marrcandre

blog: marrcandre.blogspot.com

Para mais detalhes:


1

Python, a arma secreta do Google:


slideshare.net/ramalho/python-a-arma-secreta-do-google

Python: cabe no seu bolso, no seu micro, no seu cerebro:


slideshare.net/rodsenra/unicampago2010pdf
random.choice([pergunta, d
uvida, discussao])

Marco Andr
e Lopes Mendes <marcoandre@gmail.com>

Por que Python?

Você também pode gostar