Académique Documents
Professionnel Documents
Culture Documents
7
Universidade Federal de Lavras Departamento de Cincia da Computao Ben Hur Bahia do Nascimento
Sobre os slides
Esse slide foi feito por Ben Hur Bahia do Nascimento {bh [ at ] comp.ufla.br}, baseado nas obras citadas como bibliografia no fim do arquivo e pode ser distribudo gratuitamente, sob a licena:
Licena Creative Commons Atribuio-Uso NoComercial-compartilhamento pela mesma Licena 2.5 Brasil. Para ver uma cpia desta licena, visite http://creativecommons.org/licenses/by-ncsa/2.5/br/ ou envie uma carta para Creative Commons, 171 Second Street, Suite 300, San Francisco, California 94105, USA.
O que Python?
Interpretao e Compilao
Modo interativo
chamar o interpretador e executar cdigo em tempo real. Salve o arquivo com extenso *.py, entre no terminal e v na pasta do arquivo e digite python <nome do arquivo>.py
dir() e help()
Os comandos mais teis, pois facilitam a descoberta das funcionalidades das funes e mtodos para objetos. dir(objeto) Retorna uma lista de atributos e mtodos do objeto
Tipos-classe
Tipos e classes, em Python, so unificados. No h declarao de tipo, mas uma inferncia de tipo.
type() retorna o tipo da varivel. Os tipos possuem mtodos prprios. As variveis podem mudar de tipo em tempo de execuo. Existem: inteiro, inteiro longo, ponto flutuante, string, booleano, octal e hexadecimal.
Tipos-classe: Nmeros
>>> a = 'texto' >>> b = "texto" >>> type(a) <type 'str'> >>> type(b) <type 'str'>
>>> long(2.56) 2L
Testem no interpretador!
Tipos-classe: Strings
Strings: strings padres so imutveis:
banda1 = Led Zeppelin #String simples banda2 = Rachmaninov #String simples linhas=Essa e uma string em multiplas linhas. >>> print linhas Essa e uma string em multiplas linhas
Tipos-classe: Strings
Tipos-classe: Strings
Operador % usado para fazer interpolao de strings. A interpolao mais eficiente no uso de memria do que a concatenao convencional.
>>> qtdDinheiros = 23 >>> print Eu tenho %d dinheiros! % qtdDinheiros Eu tenho 23 dinheiros! >>> print Eu tenho %x hexas! % qtdDinheiros Eu tenho 17 hexas! >>> print Eu tenho %o octais! % qtdDinheiros Eu tenho 27 octais!
Tipos-classe: Strings
Smbolos usados na interpolao: %s: string. %d: inteiro. %o: octal. %x: hexadecimal. %f: real. %e: real exponencial. %%: sinal de percentagem.
Tipos-classe: Listas
Lista: so colees heterogneas de objetos, que podem ser de qualquer tipo, inclusive outras listas. Sintaxe: <varivel> = []
L = [ Douglas Adams, oi, [3.14,2.71],1]
So mutveis, podendo ser alteradas a qualquer momento. Listas podem ser fatiadas da mesma forma que as strings, mas como as listas so mutveis, possvel fazer atribuies a itens da lista.
Tipos-classe: Tuplas
Semelhantes as listas, porm so imutveis: no se pode acrescentar, apagar ou fazer atribuies aos itens. Utilidade: aloca memria de forma contnua, melhorando desempenho. Indicado para utilizao matemtica. Sintaxe: <varivel> = ()
tuplita = (142857,Chico Buarque,uRichard Dawkins) tupra = 'Michael Jackson', "Howlin' Wolf", 'John Coltrane'
A funo list() transforma uma tupla em lista A funo tuple() transforma uma lista em tupla
mtodos: count() : conta quantos itens existe do valor passado como paramtro(serve para lista tambm): a = 1,1,3,3,4 a.count(1) >> 2 index() : retorna a primeira posio que o valor passado como paramentro aparece. a.index(3) >>2
Tipos-classe: Dicionrios
Um dicionrio uma lista de associaes compostas por uma chave nica e estruturas correspondentes. Dicionrios so mutveis, tais como as listas. A chave precisa ser de um tipo imutvel, geralmente so usadas strings, mas tambm podem ser tuplas ou tipos numricos. J os itens dos dicionrios podem ser tanto mutveis quanto imutveis. O dicionrio do Python no fornece garantia de que as chaves estaro ordenadas.
Tipos-classe: Dicionrios
Tipos-classe: Booleanos
Em Python existe as palavras reservadas True e False para tipo booleano. Porm, muitas coisas em Python so considerados booleanos bool() : verifica se a varivel verdadeira ou falsa: Qualquer valor diferente de zeros e vazios considerado verdadeiro.
Tipos-classe: Booleanos
>>> bool(0) False >>> bool(0.0) False >>> bool() False >>> bool() False >>> bool([]) False >>> bool(()) False >>> bool({}) False
Todo o resto considerado verdadeiro, True
>>> 1 or False 1 >>> 0 or False False >>> not True False >>> not 1 False
Sintaxe: Blocos
O uso de barra invertida (\) e vrgula (,) permitem continuar um cdigo em outras linhas. Para comentrios: #. E a linha ser ignorada, com exceo de comentrios funcionais. Dois pontos (:) delimitam blocos. Em Python, os blocos de cdigo so delimitados pelo uso de endentao.
Sintaxe: Codificao
Para alterar a codificao do arquivo fonte do programa acrescenta-se um comentrio funcional no inicio do cdigo:
Funes
No Python, as funes: Podem retornar ou no objetos. Aceitam Doc Strings. Aceitam parmetros opcionais (com defaults). Se no for passado o parmetro ser igual ao default definido na funo. Aceitam que os parmetros sejam passados com nome. Neste caso, a ordem em que os parmetros foram passados no importa. Tem namespace prprio (escopo local), e por isso podem ofuscar definies de escopo global.
Funes
Sintaxe:
def <nome da funo> (<paramtros>):
Ex.:
Funes
permite passagem de parmetro por nome:
Se o bloco de cdigo for composto de apenas uma linha, ele pode ser escrito aps os dois pontos.
Sada: >:D mim feliz
for: a estrutura de repetio mais usada no Python. A instruo aceita no s sequncias estticas, mas tambm sequncias geradas por iteradores.
<variavel> in <estrutura itervel>:
sintaxe: for
Iteradores so estruturas que permitem iteraes, ou seja, acesso aos itens de uma coleo de elementos, de forma sequencial Break, continue e else permitidos.
While: O lao while adequado quando no h como determinar quantas iteraes vo ocorrer e no h uma sequncia a seguir.
Manipulao de arquivos
Funo Open(endereco,<modo>) Sendo os modos:
r: somente leitura (padro) w: escrita a: escrita adio b: binario
Mdulo: math
import math >>> math.trunc(5.6) #arredonda valor para baixo. 5 >>> math.log(math.e): #retorna o logaritmo do numero 1.0 >>> math.log(1024,2) # log de 1024 na base 2 10.0 >>> math.factorial(5) #retorna o fatorial do numero dado. 120 >>> math.fabs(-5) #mdulo de algum valor 5.0 >>> math.pi: #constante Pi 3.141592653689793 >>> math.e: #nmero de Euler 2.718281828459045
Orientao a Objetos
Objetos so abstraes computacionais que representam entidades, com suas qualidades (atributos) e aes (mtodos) que estas podem realizar. A classe a estrutura bsica do paradigma de orientao a objetos, que representa o tipo do objeto, um modelo a partir do qual os objetos sero criados.
Orientao a Objetos:
Os atributos so estruturas de dados que armazenam informaes sobre o objeto e os mtodos so funes associadas ao objeto, que descrevem como o objeto se comporta. Sintaxe:
Orientao a Objetos:
O interpretador Python possui um recurso chamado coletor de lixo (Garbage Collector) que limpa da memria objetos sem referncias. mtodo __init__() inicializa os valores do parmetros mtodo __repr__() uma representao do objeto como string
Fora da classe
Cdigo-fonte = mdulo?
Ao fazermos a verificao do namespace __name__ como sendo o __main__, verificamos se estamos rodando o arquivo fonte ou se estamos apenas importando-o
Cdigo-fonte = mdulo?
Rodando o arquivo
Do mdulo pessoa.py, importe Pessoa. Nesse caso, no rodar o main do arquivo pessoa.py, pois estamos no namespace do interpretador Todos arquivos *.py so tanto cdigo-fonte quanto um mdulo.
Tratamento de Excees
Quando ocorre uma falha no programa (como uma diviso por zero, por exemplo) em tempo de execuo, uma exceo gerada. Se a exceo no for tratada, ela ser propagada atravs das chamadas de funo at o mdulo principal do programa, interrompendo a execuo
Tratamento de Excees
print 1/0 >>>Traceback (most recent call last): File "<input>", line 1, in ? ZeroDivisionError: integer division or modulo by zero
Tratamento de Excees
try: print 1/0 except ZeroDivisionError: print 'Erro ao tentar dividir por zero. >>>Erro ao tentar dividir por zero.
Biblioteca padro
comum dizer que o Python vem com baterias inclusas, em referncia a vasta biblioteca de mdulos e pacotes que distribuda com o interpretador. Alguns mdulos importantes da biblioteca padro: Matemtica: math, cmath, decimal e random. Sistema: os, glob, shutils e subprocess. Threads: threading. Persistncia: pickle e cPickle. XML: xml.dom, xml.sax e elementTree (a partir da verso 2.5). Configurao: ConfigParser e optparse. Tempo: time e datetime. Outros: sys, logging, traceback, types e timeit.
Bibliografia
Python para Desenvolvedores,Luiz Eduardo Borges, 2 edio, 360 pag., Edio do Autor, Rio de Janeiro, 2010, http://ark4n.wordpress.com/python/ How to Think like a Computer Scientist: Learning with Python, Allen Downey, Jerey Elkner & Chris Meyers, 2nd Edition, 280 pag., Editado por Shannon Turlington & Lisa Cutler, Wellesley, MA, 2008
ps: in english.