1. Introdução a linguagem Python 2.7
Universidade Federal de Lavras
Departamento de Ciência da Computação
Ben Hur Bahia do Nascimento
2. 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 distribuído
gratuitamente, sob a licença:
• Licença Creative Commons Atribuição-Uso Não-
Comercial-compartilhamento pela mesma Licença
2.5 Brasil. Para ver uma cópia desta licença, visite
http://creativecommons.org/licenses/by-nc-
sa/2.5/br/ ou envie uma carta para Creative
Commons, 171 Second Street, Suite 300, San
Francisco, California 94105, USA.
3. Python: Criador e Origem
• A linguagem foi criada por Guido von
Russom.
• O nome Python teve a sua origem no
grupo humorístico britânico Monty
Python criador do programa Monty
Python's Flying Circus, embora
muitas pessoas façam associação
com o réptil do mesmo nome (em
português, píton ou pitão).
4. O que é Python?
● É uma linguagem de programação de altíssimo nível
● Suporte nativo a estruturas de dados de alto nível
● Interpretada (compilável também)
● Imperativa
● Multiparadigma
● Orientada a objetos, Procedural e Funcional
● Possui tipagem dinâmica e forte
● Possui Garbage Colector (Gerenciador de Memória)
● A linguagem é Case Sensitive
● Interage com outras linguagens
● IronPython (.NET), Jython(Java), C e C++
5. Por que usar Python?
• Sintaxe limpa, concisa e de fácil leitura
• Mais com menos código
• Fácil aprendizado
• Forte suporte da comunidade
• Documentação extensa
• Biblioteca padrão enorme
6. Quem usa Python?
• Google
• NASA
• Nokia
• Gimp/Inkscape/Blender
• Governo (brasil.gov.br)
• Portal G1(g1.globo.br)
• É utilizada em vários processos no Linux.
http://www.python.org.br/wiki/EmpresasPython
http://www.python.org/about/success/
8. Modo interativo
● É chamar o interpretador e executar código em tempo real.
● Salve o arquivo com extensão *.py, entre no terminal e vá na pasta
do arquivo e digite “python <nome do arquivo>.py”
9. dir() e help()
• Os comandos mais úteis, pois facilitam a descoberta
das funcionalidades das funções e métodos para
objetos.
• dir(objeto)
– Retorna uma lista de atributos e métodos do objeto
• print help(objeto)
– Mostra a documentação do objeto
10. Tipos-classe
• Tipos e classes, em Python, são unificados.
• Não há declaração de tipo, mas uma inferência de
tipo.
• type() retorna o tipo da variável.
• Os tipos possuem métodos próprios.
• As variáveis podem mudar de tipo em tempo de
execução.
• Existem: inteiro, inteiro longo, ponto flutuante, string,
booleano, octal e hexadecimal.
11. Tipos-classe: Números
● variável = algum valor
>>> really_long = 99999999999999999999 #20 9s
>>> type(really_long)
<type 'long'>
>>> a = 1 >>> a = True
>>> b = False >>> a = 'texto'
>>> type(a) >>> b = "texto"
<type 'int'> >>> type(a)
<type 'bool'> >>> type(a)
>>> type(b) <type 'str'>
<type 'bool'> >>> type(b)
<type 'str'>
Tentem usar dir(a) e help(a)
13. Tipos-classe: Operadores Aritméticos
• Padrões: + - * /
• Divisão inteira: a / b -> sendo a E b inteiros.
• Divisão inteira: a // b -> sendo a OU b float
• Divisão float: a / b -> sendo a OU b float
• Exponenciação: base ** exp
• Módulo: a % b -> resto da divisão de a por b
14. Tipos-classe: Strings
Strings: strings padrões são imutáveis:
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
15. Tipos-classe: Strings -> Operações
• +(concatenação) e *(multiplicação)
>>> banda = „Arctic‟
>>> banda + ‟ Monkeys!‟
„Arctic Monkeys!‟
>>> banda * 3
„ArcticArcticArctic‟
16. Tipos-classe: Strings -> Métodos
• Utilizando os métodos replace(),strip()
faça:
• Troque onde houver cachorro por macaco e
vice-versa:
animais=„Os macacos vivem coçando as costas. Se fosse
um cachorro, morderia.‟
• Traduza essa mensagem:
msg=‟02 42tr0n4ut42 ch3g4r4m.‟
18. Tipos-classe: Strings
• Operador “%” é usado para fazer interpolação de
strings.
• A interpolação é mais eficiente no uso de memória
do que a concatenação 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!
19. Tipos-classe: Strings mutáveis
• Strings da classe UserString são mutáveis:
from UserString import MutableString
>>> a = MutableString( „Pascal =)‟ )
>>> print a
Pascal =)
>>> a[-1] = „(‟
>>> print a
Pascal =(
21. Tipos-classe: Listas
Lista: são coleções heterogêneas de objetos, que
podem ser de qualquer tipo, inclusive outras listas.
Sintaxe: <variável> = []
L = [ „Douglas Adams‟, ”‟oi‟”, [3.14,2.71],1]
São mutáveis, podendo ser alteradas a qualquer
momento. Listas podem ser fatiadas da mesma
forma que as strings, mas como as listas são
mutáveis, é possível fazer atribuições a itens da lista.
22. Tipos-classe: Listas -> Métodos
Alguns métodos/operações em listas:
>>> lista = [“Anem”] >>> lista.sort()
>>> lista.append(1.9) >>> lista
>>> lista [0.7, 1.9, 58]
[“Anem”, 1.9] >>> lista.reverse() >>>
>>> lista.remove(“Anem”) lista
>>> lista [58, 1.9, 0.7]
[1.9] >>> lista[1:]
>>> lista.append(0.7) [1.9, 0.7]
>>> lista.append(58)
>>> lista
[1.9, 0.7, 58]
23. Tipos-classe: Listas -> Métodos
Alguns métodos/operações em listas:
>>> lista.pop() #Implementa filas e pilhas
0.7
>>> lista
[58, 1.9]
>>> lista.pop(0) #índice
58
>>> lista = [1,2,3]
>>> lista.insert(1,„intruso‟) # posição específica
>>> lista
[1, ‟intruso‟, 2, 3]
24. Tipos-classe: Tuplas
Semelhantes as listas, porém são imutáveis: não se pode
acrescentar, apagar ou fazer atribuições aos itens.
Utilidade: aloca memória de forma contínua, melhorando
desempenho. Indicado para utilização matemática.
Sintaxe: <variável> = ()
tuplita = (142857,‟Chico Buarque‟,u”Richard Dawkins”)
tupra = 'Michael Jackson', "Howlin' Wolf", 'John
Coltrane'
● A função list() transforma uma tupla em lista
● A função tuple() transforma uma lista em tupla
25. Tipos-classe: Tuplas -> Métodos
●algunsmétodos:
●count() : conta quantos itens existe do valor
passado como paramêtro(serve para lista também):
a = 1,1,3,3,4
a.count(1)
>> 2
●index() : retorna a primeira posição que o valor
passado como paramentro aparece.
a.index(3)
>>2
26. Tipos-classe: Dicionários
• Um dicionário é uma lista de associações
compostas por uma chave única e estruturas
correspondentes. Dicionários são mutáveis, tais
como as listas.
• A chave precisa ser de um tipo imutável,
geralmente são usadas strings, mas também
podem ser tuplas ou tipos numéricos. Já os itens
dos dicionários podem ser tanto mutáveis quanto
imutáveis. O dicionário do Python não fornece
garantia de que as chaves estarão ordenadas.
30. Tipos-classe: Booleanos
• Em Python existe as palavras reservadas True
e False para tipo booleano.
• Porém, muitas coisas em Python são
considerados booleanos
• bool() : verifica se a variável é verdadeira ou
falsa:
• Qualquer valor diferente de zeros e vazios é
considerado verdadeiro.
31. Tipos-classe: Booleanos
>>> bool(0) >>> bool([])
False False
>>> bool(0.0) >>> bool(())
False False
>>> bool(„‟) >>> bool({})
False False
>>> bool(“”)
Todo o resto é considerado
False
verdadeiro, True
32. Tipos-classe: Booleanos ->
Operadores Booleanos
• and,or,not,is e in >>> 1 or False
>>> True and True
1
True
>>> 0 or False
>>> True or False
True False
>>> 4 in [1,4] >>> not True
True False
>>> a=1; b=a >>> not 1
>>> a is b False
True
33. Tipos-classe: Booleanos ->
Operadores Relacionais
• >, <, >=, <=, ==, !=, <> >>> 2>3
• != e <> significam “diferente” False
• É possível usar vários >>> 3>=3
operadores na relação: True
>>> 1<2<=3<4<5>4>3>=2!=1 >>> 4<=3
True False
>>> x=3
• all(): retorna True se todos
itens passados forem >>> 2<x<4
verdadeiros. True
• any(): retorna True se algum
>>> all(1,5.5)
item for verdadeiro. True
>>> any(0,1)
True
34. Sintaxe: Blocos
● O uso de barra invertida () e vírgula (,) permitem
continuar um código em outras linhas.
● Para comentários: #. E a linha será ignorada, com exceção
de comentários funcionais.
● Dois pontos (:) delimitam blocos.
● Em Python, os blocos de código são delimitados pelo uso
de endentação.
35. Sintaxe: Codificação
• Para alterar a codificação do arquivo fonte do
programa acrescenta-se um comentário funcional no
inicio do código:
• No inicio do arquivo, no qual <encoding> é a
codificação do arquivo (geralmente latin1 ou utf-8).
36. Funções
• No Python, as funções:
• Podem retornar ou não objetos.
• Aceitam Doc Strings.
• Aceitam parâmetros opcionais (com defaults). Se não
for passado o parâmetro será igual ao default definido
na função.
• Aceitam que os parâmetros sejam passados com
nome. Neste caso, a ordem em que os parâmetros
foram passados não importa.
• Tem namespace próprio (escopo local), e por isso
podem ofuscar definições de escopo global.
37. Funções
• Sintaxe:
def <nome da função> (<paramêtros>):
Ex.:
#escrevam isso em um arquivo!
Saída:
1024
6.543216468462249
Funcao de exponenciacao.
40. Escopo das variáveis
• Para declarar, dentro de algum escopo, uma
variavel global, usa-se o comando global:
Saída:
oi
none
oie
41. Controle de fluxo: if, elif e else
● Se o bloco de código for composto de apenas uma
linha, ele pode ser escrito após os dois pontos.
Saída:
>:D
mim feliz
42. Laços de Repetição: for
● for: É a estrutura de repetição mais usada no
Python. A instrução aceita não só sequências
estáticas, mas também sequências geradas por
iteradores.
sintaxe: for <variavel> in <estrutura iterável>:
● Iteradores são estruturas que permitem iterações,
ou seja, acesso aos itens de uma coleção de
elementos, de forma sequencial
● Break, continue e else permitidos.
44. Laços de repetição: while
● While: O laço while é adequado quando não há
como determinar quantas iterações vão ocorrer e
não há uma sequência a seguir.
45. Entrada e saida de dados
• O comando print escreve na saída padrão do
Python.
• A entrada padrão se dá pela função
raw_input(), que lê a entrada pelo teclado e
retorna a string.
• O uso combinado de float() e int() permite
a leitura de valores inteiros e pontos flutuantes.
46. Manipulação de arquivos
• Função Open(„endereco‟,‟<modo>‟)
• Sendo os modos:
– r: somente leitura (padrão)
– w: escrita
– a: escrita adição
– b: binario
• operador + permite leitura e gravação.
47. Manipulação de arquivos: métodos
• <objeto-arquivo>.readlines(): retorna uma lista com cada
linha do arquivo.
• <objeto-arquivo>.mode(): retorna o modo atual do arquivo
• <objeto-arquivo>.write(): escreve no arquivo
• <objeto-arquivo>.close(): fecha o objeto
48. Módulo: 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) #módulo de algum valor
5.0
>>> math.pi: #constante Pi
3.141592653689793
>>> math.e: #número de Euler
2.718281828459045
49. Orientação a Objetos
• Objetos são abstrações computacionais que
representam entidades, com suas qualidades
(atributos) e ações (métodos) que estas
podem realizar.
• A classe é a estrutura básica do paradigma de
orientação a objetos, que representa o tipo do
objeto, um modelo a partir do qual os objetos
serão criados.
51. Orientação a Objetos:
• Os atributos são estruturas de dados que
armazenam informações sobre o objeto e os
métodos são funções associadas ao objeto,
que descrevem como o objeto se comporta.
• Sintaxe:
52. Orientação a Objetos:
• O interpretador Python possui um recurso
chamado coletor de lixo (Garbage Collector) que
limpa da memória objetos sem referências.
• método __init__() inicializa os valores do
parâmetros
• método __repr__() é uma representação do
objeto como string
56. Código-fonte = módulo?
Ao fazermos a verificação do namespace __name__ como
sendo o __main__, verificamos se estamos rodando o arquivo
fonte ou se estamos apenas importando-o
57. Código-fonte = módulo?
Rodando o arquivo
Do módulo pessoa.py,
importe Pessoa.
Nesse caso, não rodará
o “main” do arquivo
pessoa.py, pois estamos no
namespace do interpretador
Todos arquivos *.py são
tanto código-fonte
quanto um módulo.
59. Orientação a Objetos: Serialização
• É basicamente você salvar um objeto em um
arquivo.
• Como tudo em Python é objeto, você pode salvar
qualquer coisa com serialização.
• Pode por exemplo salvar uma lista, com o que tiver
nela. Depois é só recarregar esse objeto lista em
uma lista nova e continuar usando-a.
• Existem frameworks em Python de terceiros que
oferecem formas de persistência com recursos
mais avançados.
60. Orientação a Objetos: Serialização
• Importe o modulo pickle
para salvar o objeto, sintaxe:
pickle.dump(<objeto>,file(„<nomeArquivo>‟,‟w‟))
para reabrir o objeto:
a = pickle.load(file(„<nomeArquivo>‟))
61. Funções Lambda
(Programação Funcional)
• Programação funcional é um paradigma que
trata a computação como uma avaliação de
funções matemáticas.
• No Python, lambda é uma função anônima
composta apenas por expressões.
• As funções lambda podem ter apenas uma
linha, e podem ser atribuídas a uma variável.
63. Tratamento de Exceções
• Quando ocorre uma falha no programa (como
uma divisão por zero, por exemplo) em tempo
de execução, uma exceção é gerada. Se a
exceção não for tratada, ela será propagada
através das chamadas de função até o módulo
principal do programa, interrompendo a
execução
64. Tratamento de Exceções
print 1/0
>>>Traceback (most recent call last):
File "<input>", line 1, in ?
ZeroDivisionError: integer division or modulo by
zero
65. Tratamento de Exceções
try:
print 1/0
except ZeroDivisionError:
print 'Erro ao tentar dividir por zero.‘
>>>Erro ao tentar dividir por zero.
66. Biblioteca padrão
• É comum dizer que o Python vem com “baterias
inclusas”, em referência a vasta biblioteca de módulos
e pacotes que é distribuída com o interpretador.
• Alguns módulos importantes da biblioteca padrão:
• Matemática: math, cmath, decimal e random.
• Sistema: os, glob, shutils e subprocess.
• Threads: threading.
• Persistência: pickle e cPickle.
• XML: xml.dom, xml.sax e elementTree (a partir da
versão 2.5).
• Configuração: ConfigParser e optparse.
• Tempo: time e datetime.
• Outros: sys, logging, traceback, types e timeit.
67. Bibliografia
• Python para Desenvolvedores,Luiz Eduardo Borges,
2ª edição, 360 pag., Edição do Autor, Rio de
Janeiro, 2010,
http://ark4n.wordpress.com/python/
• How to Think like a Computer Scientist: Learning with
Python, Allen Downey, Jeffrey Elkner & Chris
Meyers, 2nd Edition, 280 pag., Editado por
Shannon Turlington & Lisa Cutler, Wellesley,
MA, 2008
68. “The Zen of Python” por Tim Peters
• digite no Python:
>> import this
ps: in english.