O documento apresenta 10 razões para aprender a linguagem de programação Python, destacando que Python é uma linguagem de alto nível, de sintaxe simples e orientada a objetos, funcional e estruturada. Python é amplamente utilizado no Brasil e no mundo em diversas aplicações como web, ciência de dados e desenvolvimento de sistemas.
1. Por que Python?
10 raz˜oes para aprender Python
Marco Andr´e Lopes Mendes <marcoandre@gmail.com>
21 de outubro de 2010
Marco Andr´e Lopes Mendes <marcoandre@gmail.com> Por que Python?
2. Uma breve introdu¸c˜ao
desse que vos fala
1 Mestre em Ciˆencia da Computa¸c˜ao pela UFSC
2 Professor desde 1995
1 Usu´ario Unix desde 1992 e Linux desde 1999
2 Entusiasta de software de c´odigo aberto
1 Membro da comunidade Python desde 2004
2 Membro-fundador da Associa¸c˜ao Python Brasil (APyB)
3 Membro da diretoria da APyB
Marco Andr´e Lopes Mendes <marcoandre@gmail.com> Por que Python?
3. Uma breve introdu¸c˜ao
Sobre a linguagem
1 Criada por Guido van Rossum em 1991
2 Origem do nome: grupo de humoristas
Monty Python
3 Linguagem de alt´ıssimo n´ıvel (VHLL)
4 Sintaxe simples e f´acil de ser assimilada
5 Orientada `a objetos, estruturada e funcional
6 Tipagem forte e dinˆamica
7 Multiplataforma
8 Interpretada
9 Ambiente interativo
10 Licen¸ca compat´ıvel com a GPL
Marco Andr´e Lopes Mendes <marcoandre@gmail.com> Por que Python?
4. 1 - Python ´e legal
arquivo = open("emails.txt")
dominios = {}
for contato in arquivo:
resto , dominio = contato.split("@")
dominio = dominio.replace("rn", "")
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;%sn" %( dominio , dominios[dominio ])
arquivo.write(registro)
arquivo.close ()
1 Simples
2 Leg´ıvel
3 Clara
4 Simplificada
5 Sofisticada
6 Poderosa
Marco Andr´e Lopes Mendes <marcoandre@gmail.com> Por que Python?
5. 2 - Python j´a vem com os acess´orios
Marco Andr´e Lopes Mendes <marcoandre@gmail.com> Por que Python?
6. 3 - Python ´e utilizado l´a fora
Marco Andr´e Lopes Mendes <marcoandre@gmail.com> Por que Python?
7. 3 - Python ´e utilizado l´a fora
Marco Andr´e Lopes Mendes <marcoandre@gmail.com> Por que Python?
8. 4 - Python ´e utilizado aqui dentro
LZT: AutoSystem
Async: Stoq
Instituto Nokia de Tecnologia
InVesalius
Marco Andr´e Lopes Mendes <marcoandre@gmail.com> Por que Python?
9. 5 - Python ´e utilizado na web ao redor do mundo
Marco Andr´e Lopes Mendes <marcoandre@gmail.com> Por que Python?
10. 5 - Python ´e utilizado na web ao redor do mundo
Diversos frameworks
Marco Andr´e Lopes Mendes <marcoandre@gmail.com> Por que Python?
11. 6 - Python ´e utilizado na web aqui no Brasil
globo.com
uiner.com
vericia.com
brasil.gov.br
Marco Andr´e Lopes Mendes <marcoandre@gmail.com> Por que Python?
12. 6 - Python ´e utilizado na web aqui no Brasil
ucs.br
serpro.gov.br
certsign.com.br
atepassar.com.br
Marco Andr´e Lopes Mendes <marcoandre@gmail.com> Por que Python?
13. 7 - Tem emprego para programadores Python
python.org/community/jobs
twitter.com/python_jobs
empregos.trovitbrasil.com.br/python
google.com.br/intl/en/jobs/
Marco Andr´e Lopes Mendes <marcoandre@gmail.com> Por que Python?
14. 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 ){
Py_SetProgramName (argv [0]);
Py_Initialize ();
initspam ();
return 1; }
Marco Andr´e Lopes Mendes <marcoandre@gmail.com> Por que Python?
15. 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 . showMessageDialog (None , "Soma: %d " % soma)
Marco Andr´e Lopes Mendes <marcoandre@gmail.com> Por que Python?
16. 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 OnMsgButtonClick (self , *args ):
MessageBox.Show(self.txtMessage.Text ,"Message")
Application.Run(FormV3 ())
Marco Andr´e Lopes Mendes <marcoandre@gmail.com> Por que Python?
17. 8 - Python conversa com as outras linguagens
Marco Andr´e Lopes Mendes <marcoandre@gmail.com> Por que Python?
18. 9 - Python ´e multiplataforma
At´e aqui, nada de surpreendente, certo?
Marco Andr´e Lopes Mendes <marcoandre@gmail.com> Por que Python?
19. 9 - Python ´e multiplataforma
XO/OLPC
Grande parte do projeto ´e desenvolvida em Python, incluindo:
1 A interface gr´afica Sugar
2 V´arias aplica¸c˜oes e jogos
3 O sistema de arquivos
Marco Andr´e Lopes Mendes <marcoandre@gmail.com> Por que Python?
20. 9 - Python ´e multiplataforma
Dispositivos m´oveis
Maemo
Android
Iphone
Symbian
Marco Andr´e Lopes Mendes <marcoandre@gmail.com> Por que Python?
22. 10 - Python ´e multiparadigma
Programa¸c˜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__
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
Marco Andr´e Lopes Mendes <marcoandre@gmail.com> Por que Python?
23. 10 - Python ´e multiparadigma
Programa¸c˜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)))
# Fibonacci : 10 primeiros 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))
# Conjunto de Mandelbrot
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?
24. Bˆonus 1: 11 - Python ´e boa como primeira linguagem
aprenda a programar com Python
1 Experiˆencia de ensino desde 2004
2 V´arios iniciativas no Brasil e no mundo
3 MIT copiou nossa id´eia :)
4 Faz bem `a auto-estima do iniciante
5 Uso pode ser extrapolado para outras mat´erias
Marco Andr´e Lopes Mendes <marcoandre@gmail.com> Por que Python?
25. Bˆonus 2: 12 - Existe uma comunidade forte
vocˆe tem com quem contar
1 Lista python-brasil: 3241 membros, 500 mensagens/mˆes.
2 Associa¸c˜ao Python Brasil: amadurecimento da comunidade
3 PythonBrasil[6]: na UFPR, em Curitiba/PR
4 FISL, Latinoware: trilhas de Python
5 Grupos de Usu´arios, PythOn Campus, #horaextra
Marco Andr´e Lopes Mendes <marcoandre@gmail.com> Por que Python?
26. 1 Estes slides: slideshare.com/marrcandre
2 google*: marcoandre@gmail.com
3 twitter: @marrcandre
4 blog: marrcandre.blogspot.com
random.choice([’pergunta’, ’d´uvida’, ’discuss˜ao’])
Marco Andr´e Lopes Mendes <marcoandre@gmail.com> Por que Python?