56
Python Andrea Menezes (afm3) Maíra Nascimento (mcn2)

Python Andrea Menezes (afm3) Maíra Nascimento (mcn2)

Embed Size (px)

Citation preview

Page 1: Python Andrea Menezes (afm3) Maíra Nascimento (mcn2)

Python

Andrea Menezes (afm3)

Maíra Nascimento (mcn2)

Page 2: Python Andrea Menezes (afm3) Maíra Nascimento (mcn2)

Agenda

O que é Python Por que usar python História Quem usa Python Características A Liguagem

Page 3: Python Andrea Menezes (afm3) Maíra Nascimento (mcn2)

O que é Python

Page 4: Python Andrea Menezes (afm3) Maíra Nascimento (mcn2)

Python

Linguagem de alto nível Orientada a Objetos Interpretada Não é apenas uma linguagem de script Fácil de usar e de aprender

Page 5: Python Andrea Menezes (afm3) Maíra Nascimento (mcn2)

Por que usar Python

Page 6: Python Andrea Menezes (afm3) Maíra Nascimento (mcn2)

Por que usar Python?

Conceitos fundamentais simples Sintaxe clara – muito próxima de um

pseudo-código Código curto e legível Tipos pré-definidos poderosos Possui um vasto repertório de bibliotecas Ciclo de desenvolvimento rápido

Page 7: Python Andrea Menezes (afm3) Maíra Nascimento (mcn2)

Por que usar Python?

Licença Open Source Pouco punitiva: poucas regras arbitrárias; Extensível (adicionar novos módulos)

C/C++ Java (através Jython)

Extremamente portável Unix/Linux, Windows, Mac, PalmOS, WindowsCE,

RiscOS, VxWorks, QNX, OS/2, OS/390, AS/400, PlayStation, Sharp Zaurus, BeOS, VMS…

Page 8: Python Andrea Menezes (afm3) Maíra Nascimento (mcn2)

História

Page 9: Python Andrea Menezes (afm3) Maíra Nascimento (mcn2)

Breve História Criada por Guido van Rossum em 1989 no Centrum voor Wiskunde en Informatica

(CWI), em Amsterdã,Holanda. Linguagem de scripts para o sistema

operacional distribuído Amoeba Baseada na linguagem ABC, desenvolvida no

CWI por Guido e outros nas décadas de 70 e 80.

O nome Python teve origem no grupo humorístico britânico Monty Python.

Page 10: Python Andrea Menezes (afm3) Maíra Nascimento (mcn2)

Versões

26 de janeiro de 1994 – versão 1.0 1998 – JPython 16 de outubro de 2000 – versão 2.0 19 de setembro de 2006 – versão 2.5

(atual)

Page 11: Python Andrea Menezes (afm3) Maíra Nascimento (mcn2)

Quem usa Python

Page 12: Python Andrea Menezes (afm3) Maíra Nascimento (mcn2)

No Mundo

NASA (vários projetos) Yahoo! (Yahoo mail & groups) Apple, H.P., Microsoft Muitas Universidades, como MIT, e

Stanford

Page 13: Python Andrea Menezes (afm3) Maíra Nascimento (mcn2)

Google

Sistema de ajuda do GMail Google Groups Sistema de compilação de aplicativos (build

system). Sistema de empacotamento e entrega de dados

(packaging system). Sistema de monitoramento e manutenção do

cluster Sistema de testes

Page 14: Python Andrea Menezes (afm3) Maíra Nascimento (mcn2)

No Brasil

Jornal do Brasil, AOL Brasil Embratel: monitoramento das interfaces de

backbone e clientes de internet, também existem scripts de uso interno.

CPqD: monitoramento de centrais telefônicas. Conectiva: Gerenciamento de pacotes da

distribuição Linux e ferramentas de uso interno. Async: desenvolvimento de software de

automação comercial

Page 15: Python Andrea Menezes (afm3) Maíra Nascimento (mcn2)

Características

Page 16: Python Andrea Menezes (afm3) Maíra Nascimento (mcn2)

Compilada X Interpretada

Interpretada Interpretador interativo Compilador de byte code

compilação implícita e automática

Page 17: Python Andrea Menezes (afm3) Maíra Nascimento (mcn2)

Paradigma

Orientada a Objetos Suporte a outros paradigmas

EstruturalFuncional

Fácil integração com outras linguagens

Page 18: Python Andrea Menezes (afm3) Maíra Nascimento (mcn2)

Sistema de Tipos

Fortemente tipadaObjetos não podem mudar de tipo Não há conversão automática de tipos

Tipagem dinâmicaNão há declaração de variáveis

Page 19: Python Andrea Menezes (afm3) Maíra Nascimento (mcn2)

Outras

Poderosas estruturas de dados nativas Listas Dicionários

Identação para estrutura de bloco Blocos demarcados por espaços

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

print "zero"else:

print a

Page 20: Python Andrea Menezes (afm3) Maíra Nascimento (mcn2)

A Linguagem

Page 21: Python Andrea Menezes (afm3) Maíra Nascimento (mcn2)

Comentários e Comentários Funcionais Após o caractere “#” até o final da linha, tudo é

considerado um comentário e ignorado, exceto pelos comentários funcionais.

Definindo a codificação do arquivo fonte #−− coding: <encoding−name> −−

Em sistemas Posix pode-se usar o comentário funcional #!/usr/bin/env python para executar o arquivo com o comando python encontrado no ambiente. Isto não é característico de Python, mas dos sistemas Posix.

Page 22: Python Andrea Menezes (afm3) Maíra Nascimento (mcn2)

Indentação

Em Python, os blocos de código são delimitados pelo uso de indentação.

A indentação não precisa ser consistente em todo o arquivo, só no bloco de código. Uma boa prática é ser consistente no projeto todo.

Cuidado ao misturar TAB e Espaços: configure seu editor!

Page 23: Python Andrea Menezes (afm3) Maíra Nascimento (mcn2)

Variáveis

Tipagem dinâmica uma variável não tem tipo fixo, ela tem o tipo do

objeto que ela contém. Não precisam ser declaradas Variáveis são criadas quando atribuídas pela

primeira vez Variáveis devem ser atribuídas antes de serem

referenciadas “Tudo” é uma variável

Funções, classes, módulos ...

Page 24: Python Andrea Menezes (afm3) Maíra Nascimento (mcn2)

Tipos de Dados

Variáveis Numéricas Imutáveis

num_int = 13

num_int_long = 13L

num_real = 13.0

Page 25: Python Andrea Menezes (afm3) Maíra Nascimento (mcn2)

Tipos de Dados

Strings ImutáveisCriação

texto1 = ‘abcdefghij ‘ texto2 = “outro texto” texto3 = ‘’’este texto

tem varias

linhas ‘’’

Page 26: Python Andrea Menezes (afm3) Maíra Nascimento (mcn2)

Tipos de Dados

Strings Acesso a elementos pelo índice

texto1 = ‘abcdefghij ‘

print texto1 [ 2 ] # Imprime ’ c ’

print ’GSB ’[ 1 ] # Imprime ’ S ’

Principais Métodos:

split, count, index, join, lower, upper, replace

Page 27: Python Andrea Menezes (afm3) Maíra Nascimento (mcn2)

Tipos de Dados

TuplasFormadas por elementos de qualquer

tipoDelimitadas por parênteses. ‘(‘ e ‘)’ Imutáveis

não se pode acrescentar apagar ou modificar valores

Vantagem: eficiente

Page 28: Python Andrea Menezes (afm3) Maíra Nascimento (mcn2)

Tipos de Dados

Listas Formadas por elementos de qualquer tipo Criação

lista = [ 10 , 2 , 3 , ’texto’ , 20 ] Acesso a elementos pelo índice

print lista [ 2 ] # imprime ’3 ’

Principais Métodos:append, count, index, insert, pop,

remove,reverse, sort

Page 29: Python Andrea Menezes (afm3) Maíra Nascimento (mcn2)

Listas

Dado uma lista “lista”, verifique se “valor” está dentro dela, caso verdade imprima “Sim”, senão imprima “Não”.

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 posição está rotacionada em 3 posiçõeses, isto é, indice0 = indice + 3.

Page 30: Python Andrea Menezes (afm3) Maíra Nascimento (mcn2)

Tipos de Dados

Dicionários Formados por pares de chave-valor Delimitados por chaves. ‘{‘ e ‘}’

d = { ’chave ’: ’valor ’ , ’linguagem ’: ‘python’ }

Chave sempre um valor Imutável!lista = [ 1 , 2 ]

d[ lista ] = ’outro valor ’ #TypeError: list object are unhashable

Page 31: Python Andrea Menezes (afm3) Maíra Nascimento (mcn2)

Tipos de Dados

Dicionários Principais Métodos:

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

Page 32: Python Andrea Menezes (afm3) Maíra Nascimento (mcn2)

Dicionários

Crie um dicionário d e coloque nele seus dados: nome, idade, telefone,endereço.

Usando o dicionário d criado anteriormente, imprima seu nome.

Também usando d, imprima todos os itens do dicionário no formato chave : valor, ordenado pela chave.

Page 33: Python Andrea Menezes (afm3) Maíra Nascimento (mcn2)

Controle de Fluxo

if exp:#comandos

else:

#comandos

if exp:#comandos

elif exp:#comandos

else:#comandos

Page 34: Python Andrea Menezes (afm3) Maíra Nascimento (mcn2)

Controle de Fluxo

Os seguintes valores são considerados falsos: None False Valor 0 de viários tipos: 0, 0.0, 0L, 0j Seqüências vazias: ”, (), [] Mapeamentos vazios Instâncias de objetos que definam __nonzero__() que

retorne valor False ou 0 Instância de objetos que definem o __len__() o qual

retorne 0.

Page 35: Python Andrea Menezes (afm3) Maíra Nascimento (mcn2)

Controle de Fluxo

Implemente o seguinte conjunto de regras em Python: Se a for verdadeiro e b for falso, imprima “Caso 1” Senão, Caso a for falso e b for verdadeiro, imprima

“Caso 2” Caso contrário:

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” Senão imprima “Caso 5”

Page 36: Python Andrea Menezes (afm3) Maíra Nascimento (mcn2)

Estruturas de Repetição

for var in seq:

#comandos

for num in range(200):

print num

while exp: #comandos

from time import timestart = time ()while time () - start < 3.0: print “ esperando ... “

Page 37: Python Andrea Menezes (afm3) Maíra Nascimento (mcn2)

Estruturas de Repetição

Python fornece a cláusula else para os laços. Será executada quando a condição do laço for falsa.

for elemento in lista : if elemento == parada : break print elementoelse :

print " Laço chegou ao fim “

No exemplo acima, a mensagem “Laço chegou ao fim” só é imprimida caso não existir um elemento que seja igual a “parada”.

Page 38: Python Andrea Menezes (afm3) Maíra Nascimento (mcn2)

Estrutura de Repetição

Dada uma lista de palavras “lista” e uma palavra “chave” imprima o índice do elemento que encontrou a palavra, senão imprima “Palavra Não Encontrada”.

Page 39: Python Andrea Menezes (afm3) Maíra Nascimento (mcn2)

Funções

Regra LGB Referências buscam 3 escopos: local, global, built-in Atribuições criam ou modificam nomes locais por default Pode forçar argumentos a serem globais utilizando global Exemplo

x = 99def func(y):

z = x+y #x não é atribuído então é globalreturn z

func(1)

Page 40: Python Andrea Menezes (afm3) Maíra Nascimento (mcn2)

Funções

É possível definir argumentos defaults que não 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

Page 41: Python Andrea Menezes (afm3) Maíra Nascimento (mcn2)

Funções

Número variável de argumentos argumentos são passados para a função na forma de

uma lista

def arg_sem_nome ( * args ):for arg in args :

print " arg :" , arg

arg_sem_nome ( ’a’ , ’b’ , 123 )

Page 42: Python Andrea Menezes (afm3) Maíra Nascimento (mcn2)

Funções

Número variável de argumentos argumentos são passados para a função na forma de

um dicionário, 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 )

Page 43: Python Andrea Menezes (afm3) Maíra Nascimento (mcn2)

Módulos

Módulos são funções definidas em arquivos separados Itens são importados utilizando from ou import

from module import functionfunction()

import modulemodule.function()

Módulos são “namespaces” Podem ser utlizados para organizar nomes de variáveis.

mod1.umValor = mod1.umValor - mod2.umValor

Page 44: Python Andrea Menezes (afm3) Maíra Nascimento (mcn2)

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_instaciaprint A.atributo1

Page 45: Python Andrea Menezes (afm3) Maíra Nascimento (mcn2)

Classes

import datetimeclass Pessoa ( object ):

def __init__ ( self , nome , nascimento ):self . nome = nomeself . nascimento = nascimento

def idade ( self ):delta = datetime . date . today () - self . nascimentoreturn delta . days / 365

def __str__ ( self ):return ’%s , % d anos ’ % ( self .nome , self . idade () )

Page 46: Python Andrea Menezes (afm3) Maíra Nascimento (mcn2)

Classes

Atributos de Classe São atributos que estão na classe, não na instância São compartilhados entre todas as instâncias

(economia de memória) Os valores são instanciados/atribuídos ao ler a

definição de classe Úteis para casos como Jogos, onde uma imagem

deve ser compartilhada por todos os personagens idênticos, economizando memória

Úteis para fazer “lock” em regiões críticas, evitar condições de corrida, etc...

Page 47: Python Andrea Menezes (afm3) Maíra Nascimento (mcn2)

Classes

Atributos de classesclass 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 ]

Page 48: Python Andrea Menezes (afm3) Maíra Nascimento (mcn2)

Classes

Atributos Públicos e Privados Nomenclatura define atributos/métodos públicos e

privados Privados: nomes que se iniciam com __ e não terminam

com __. Públicos: os outros nomes possíveis. Convenciona-se que atributos/métodos que se iniciam e

terminam com __ (portanto públicos) são de uso interno da classe, apesar de poderem ser utilizados pelo mundo externo.

Page 49: Python Andrea Menezes (afm3) Maíra Nascimento (mcn2)

Classes Propriedade

Escrita e leitura dos atributos

class C( object ):def __init__ ( self ):

self . __x = Nonedef getX ( self ):

return self . __xdef setX ( self , valor ):

if isinstance ( valor , int ): self . __x = valorelse : raise TypeError ( “x precisa ser inteiro !” )

x = property ( getX , setX )

c = C()c.x = 1c.x = ’abc ’ # TypeError : x precisa ser inteiroprint c.x

Page 50: Python Andrea Menezes (afm3) Maíra Nascimento (mcn2)

Exceções

try:algumaCoisa()

except:print ‘Erro’

else:# Será executado se quando não houver exceçãooutraCoisa()

Page 51: Python Andrea Menezes (afm3) Maíra Nascimento (mcn2)

Exceções

try:algumaCoisa()

finally:# Será executado sempre! (com ou sem exceção)outraCoisa()

# Podemos usar except ou finally, nunca os dois!

Page 52: Python Andrea Menezes (afm3) Maíra Nascimento (mcn2)

Arquivos

Lendo todo o conteúdo para a memória:arquivo = open ( ’nome_arq.txt ’ )conteudo = arquivo.read ()arquivo.close ()

Lendo todas as linhas para a memória (lista):arquivo = open ( ’nome_arq.txt ’ )linhas = arquivo.readlines ()arquivo.close ()

Lendo uma quantidade específica de bytes:arquivo = open ( ’nome_arq.txt ’ )comeco = arquivo.read ( 20 ) # 20 primeiros bytesarquivo.close ()

Page 53: Python Andrea Menezes (afm3) Maíra Nascimento (mcn2)

Arquivos

Lendo com laços:arquivo = open ( ’nome_arq.txt ’ )# idêntico a arquivo.readlines()for linha in arquivo :

print linha

arquivo = open ( ’nome_arq.txt ’ )while True :

linha = arquivo.readline ()if linha == “”:

breakprint linha

Page 54: Python Andrea Menezes (afm3) Maíra Nascimento (mcn2)

Exercício

Page 55: Python Andrea Menezes (afm3) Maíra Nascimento (mcn2)

Contador de Palavras

Pedir Arquivo Ler Arquivo Contar quantas vezes aparece cada

palavra Listar as palavras em ordem alfabética,

junto com o seu número de repetições no texto

Page 56: Python Andrea Menezes (afm3) Maíra Nascimento (mcn2)

Referências

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