Você está na página 1de 56

Python

Andrea Menezes (afm3)


Mara Nascimento (mcn2)
Agenda
O que Python
Por que usar python
Histria
Quem usa Python
Caractersticas
A Liguagem
O que Python
Python
Linguagem de alto nvel
Orientada a Objetos
Interpretada
No apenas uma linguagem de script
Fcil de usar e de aprender
Por que usar Python
Por que usar Python?
Conceitos fundamentais simples
Sintaxe clara muito prxima de um
pseudo-cdigo
Cdigo curto e legvel
Tipos pr-definidos poderosos
Possui um vasto repertrio de bibliotecas
Ciclo de desenvolvimento rpido


Por que usar Python?
Licena Open Source
Pouco punitiva: poucas regras arbitrrias;
Extensvel (adicionar novos mdulos)
C/C++
Java (atravs Jython)
Extremamente portvel
Unix/Linux, Windows, Mac, PalmOS, WindowsCE,
RiscOS, VxWorks, QNX, OS/2, OS/390, AS/400,
PlayStation, Sharp Zaurus, BeOS, VMS

Histria
Breve Histria
Criada por Guido van Rossum em 1989
no Centrum voor Wiskunde en Informatica
(CWI), em Amsterd,Holanda.
Linguagem de scripts para o sistema
operacional distribudo Amoeba
Baseada na linguagem ABC, desenvolvida no
CWI por Guido e outros nas dcadas de 70 e
80.
O nome Python teve origem no grupo
humorstico britnico Monty Python.
Verses
26 de janeiro de 1994 verso 1.0
1998 JPython
16 de outubro de 2000 verso 2.0
19 de setembro de 2006 verso 2.5
(atual)
Quem usa Python
No Mundo
NASA (vrios projetos)
Yahoo! (Yahoo mail & groups)
Apple, H.P., Microsoft
Muitas Universidades, como MIT, e
Stanford

Google
Sistema de ajuda do GMail
Google Groups
Sistema de compilao de aplicativos (build
system).
Sistema de empacotamento e entrega de dados
(packaging system).
Sistema de monitoramento e manuteno do
cluster
Sistema de testes
No Brasil
Jornal do Brasil, AOL Brasil
Embratel: monitoramento das interfaces de
backbone e clientes de internet, tambm
existem scripts de uso interno.
CPqD: monitoramento de centrais telefnicas.
Conectiva: Gerenciamento de pacotes da
distribuio Linux e ferramentas de uso interno.
Async: desenvolvimento de software de
automao comercial

Caractersticas
Compilada X Interpretada
Interpretada
Interpretador interativo
Compilador de byte code
compilao implcita e automtica

Paradigma
Orientada a Objetos
Suporte a outros paradigmas
Estrutural
Funcional
Fcil integrao com outras linguagens

Sistema de Tipos
Fortemente tipada
Objetos no podem mudar de tipo
No h converso automtica de tipos
Tipagem dinmica
No h declarao de variveis


Outras
Poderosas estruturas de dados nativas
Listas
Dicionrios
Identao para estrutura de bloco
Blocos demarcados por espaos

print "O valor de a "
if a == 0:
print "zero"
else:
print a


A Linguagem
Comentrios e Comentrios
Funcionais
Aps o caractere # at o final da linha, tudo
considerado um comentrio e ignorado, exceto pelos
comentrios funcionais.

Definindo a codificao do arquivo fonte
# coding: <encodingname>

Em sistemas Posix pode-se usar o comentrio funcional
#!/usr/bin/env python para executar o arquivo com o
comando python encontrado no ambiente.
Isto no caracterstico de Python, mas dos sistemas Posix.

Indentao
Em Python, os blocos de cdigo so delimitados
pelo uso de indentao.
A indentao no precisa ser consistente em
todo o arquivo, s no bloco de cdigo.
Uma boa prtica ser consistente no projeto todo.
Cuidado ao misturar TAB e Espaos: configure
seu editor!

Variveis
Tipagem dinmica
uma varivel no tem tipo fixo, ela tem o tipo do
objeto que ela contm.
No precisam ser declaradas
Variveis so criadas quando atribudas pela
primeira vez
Variveis devem ser atribudas antes de serem
referenciadas
Tudo uma varivel
Funes, classes, mdulos ...
Tipos de Dados
Variveis Numricas
Imutveis

num_int = 13
num_int_long = 13L
num_real = 13.0

Tipos de Dados
Strings
Imutveis
Criao
texto1 = abcdefghij
texto2 = outro texto
texto3 = este texto
tem varias
linhas


Tipos de Dados
Strings
Acesso a elementos pelo ndice
texto1 = abcdefghij
print texto1 [ 2 ] # Imprime c
print GSB [ 1 ] # Imprime S

Principais Mtodos:
split, count, index, join, lower, upper, replace

Tipos de Dados
Tuplas
Formadas por elementos de qualquer
tipo
Delimitadas por parnteses. ( e )
Imutveis
no se pode acrescentar apagar ou modificar
valores
Vantagem: eficiente
Tipos de Dados
Listas
Formadas por elementos de qualquer tipo
Criao
lista = [ 10 , 2 , 3 , texto , 20 ]
Acesso a elementos pelo ndice
print lista [ 2 ] # imprime 3

Principais Mtodos:
append, count, index, insert, pop,
remove,reverse, sort

Listas
Dado uma lista lista, verifique se valor est
dentro dela, caso verdade imprima Sim, seno
imprima No.
Dado uma lista lista, itere sobre a lista,
imprimindo cada um de seus elementos.
Dado uma lista lista, crie uma nova lista
rotaciona_3 que cada posio est
rotacionada em 3 posieses, isto , indice0 =
indice + 3.

Tipos de Dados
Dicionrios
Formados por pares de chave-valor
Delimitados por chaves. { e }
d = { chave : valor , linguagem : python }

Chave sempre um valor Imutvel!
lista = [ 1 , 2 ]
d[ lista ] = outro valor #TypeError: list object are unhashable

Tipos de Dados
Dicionrios
Principais Mtodos:
copy, get, has_key, items, keys, update, values

Obtendo iteradores (otimizado para for):
for chave in d.iterkeys ():
print chave

for valor in d.itervalues ():
print valor

for chave , valor in d.iteritems ():
print chave , = , valor
Dicionrios
Crie um dicionrio d e coloque nele seus
dados: nome, idade, telefone,endereo.
Usando o dicionrio d criado
anteriormente, imprima seu nome.
Tambm usando d, imprima todos os itens
do dicionrio no formato chave : valor,
ordenado pela chave.



Controle de Fluxo
if exp:
#comandos
else:
#comandos


if exp:
#comandos
elif exp:
#comandos
else:
#comandos

Controle de Fluxo
Os seguintes valores so considerados falsos:
None
False
Valor 0 de virios tipos: 0, 0.0, 0L, 0j
Seqncias vazias: , (), []
Mapeamentos vazios
Instncias de objetos que definam __nonzero__() que
retorne valor False ou 0
Instncia de objetos que definem o __len__() o qual
retorne 0.

Controle de Fluxo
Implemente o seguinte conjunto de regras em
Python:
Se a for verdadeiro e b for falso, imprima Caso 1
Seno, Caso a for falso e b for verdadeiro, imprima
Caso 2
Caso contrrio:
Caso c for maior que 10 e d estiver entre 0.0 e 100.0,
imprima Caso 3
Caso e estiver na lista lst, imprima Caso 4
Seno imprima Caso 5

Estruturas de Repetio
for var in seq:
#comandos


for num in range(200):
print num
while exp:
#comandos



from time import time
start = time ()
while time () - start < 3.0:
print esperando ...
Estruturas de Repetio
Python fornece a clusula else para os laos.
Ser executada quando a condio do lao for falsa.

for elemento in lista :
if elemento == parada :
break
print elemento
else :
print " Lao chegou ao fim

No exemplo acima, a mensagem Lao chegou ao fim s
imprimida caso no existir um elemento que seja igual a parada.
Estrutura de Repetio
Dada uma lista de palavras lista e uma
palavra chave imprima o ndice do
elemento que encontrou a palavra, seno
imprima Palavra No Encontrada.

Funes
Regra LGB
Referncias buscam 3 escopos: local, global, built-in
Atribuies criam ou modificam nomes locais por default
Pode forar argumentos a serem globais utilizando global
Exemplo

x = 99
def func(y):
z = x+y #x no atribudo ento global
return z
func(1)
Funes
possvel definir argumentos defaults que no
precisam ser passados

def func(a, b, c=10, d=100):
print a, b, c, d

>>> func(1,2)
1 2 10 100
>>> func(1,2,3,4)
1,2,3,4
Funes
Nmero varivel de argumentos
argumentos so passados para a funo na forma de
uma lista

def arg_sem_nome ( * args ):
for arg in args :
print " arg :" , arg

arg_sem_nome ( a , b , 123 )
Funes
Nmero varivel de argumentos
argumentos so passados para a funo na forma de
um dicionrio, o nome do argumento a chave

def arg_com_nome ( ** kargs ):
for nome , valor in kargs . iteritems ():
print nome , "=" , valor

arg_com_nome ( a=1 , b=2 , teste =123 )

Mdulos
Mdulos so funes definidas em arquivos separados
Itens so importados utilizando from ou import
from module import function
function()

import module
module.function()
Mdulos so namespaces
Podem ser utlizados para organizar nomes de variveis.

mod1.umValor = mod1.umValor - mod2.umValor
Classes
class A:
atributo1 = 'atributo1 da classe A'
atributo2 = 'atributo2 da classe A

def __init__(self, val_ini=1):
" " " Construtor da classe A" " "
self.atributo_de_instacia = val_ini

def metodo (self):
print self.atributo_de_instacia
print A.atributo1

Classes
import datetime
class Pessoa ( object ):
def __init__ ( self , nome , nascimento ):
self . nome = nome
self . nascimento = nascimento
def idade ( self ):
delta = datetime . date . today () - self . nascimento
return delta . days / 365
def __str__ ( self ):
return %s , % d anos % ( self .nome , self . idade () )

Classes
Atributos de Classe
So atributos que esto na classe, no na instncia
So compartilhados entre todas as instncias
(economia de memria)
Os valores so instanciados/atribudos ao ler a
definio de classe
teis para casos como Jogos, onde uma imagem
deve ser compartilhada por todos os personagens
idnticos, economizando memria
teis para fazer lock em regies crticas, evitar
condies de corrida, etc...
Classes
Atributos de classes
class C( object ):
l = []

c1 = C()
c2 = C()
c1.l.append ( 1 )

print c1.l # imprime [ 1 ]
print c2.l # imprime [ 1 ]
print C.l # imprime [ 1 ]
Classes
Atributos Pblicos e Privados
Nomenclatura define atributos/mtodos pblicos e
privados
Privados: nomes que se iniciam com __ e no terminam
com __.
Pblicos: os outros nomes possveis.
Convenciona-se que atributos/mtodos que se iniciam e
terminam com __ (portanto pblicos) so de uso interno da
classe, apesar de poderem ser utilizados pelo mundo
externo.
Classes
Propriedade
Escrita e leitura dos atributos

class C( object ):
def __init__ ( self ):
self . __x = None
def getX ( self ):
return self . __x
def setX ( self , valor ):
if isinstance ( valor , int ):
self . __x = valor
else :
raise TypeError ( x precisa ser inteiro ! )
x = property ( getX , setX )

c = C()
c.x = 1
c.x = abc # TypeError : x precisa ser inteiro
print c.x
Excees
try:
algumaCoisa()
except:
print Erro
else:
# Ser executado se quando no houver exceo
outraCoisa()

Excees
try:
algumaCoisa()
finally:
# Ser executado sempre! (com ou sem exceo)
outraCoisa()

# Podemos usar except ou finally, nunca os dois!

Arquivos
Lendo todo o contedo para a memria:
arquivo = open ( nome_arq.txt )
conteudo = arquivo.read ()
arquivo.close ()

Lendo todas as linhas para a memria (lista):
arquivo = open ( nome_arq.txt )
linhas = arquivo.readlines ()
arquivo.close ()

Lendo uma quantidade especfica de bytes:
arquivo = open ( nome_arq.txt )
comeco = arquivo.read ( 20 ) # 20 primeiros bytes
arquivo.close ()

Arquivos
Lendo com laos:
arquivo = open ( nome_arq.txt )
# idntico a arquivo.readlines()
for linha in arquivo :
print linha

arquivo = open ( nome_arq.txt )
while True :
linha = arquivo.readline ()
if linha == :
break
print linha



Exerccio
Contador de Palavras
Pedir Arquivo
Ler Arquivo
Contar quantas vezes aparece cada
palavra
Listar as palavras em ordem alfabtica,
junto com o seu nmero de repeties no
texto

Referncias
Python Language Reference
http://docs.python.org/ref/ref.html
Python Library Reference
http://docs.python.org/lib/lib.html
Python Tutorial
http://docs.python.org/tut/tut.html
Python Brasil
http://www.pythonbrasil.com.br/moin.cgi/PythonBrasil

Você também pode gostar