1) O documento apresenta um minicurso sobre a linguagem de programação Python, abordando tópicos como a história, objetivos, características e conceitos básicos da linguagem.
2) Python é uma linguagem dinâmica e de múltiplos paradigmas desenvolvida por Guido van Rossum e mantida por uma fundação. Ela tem como objetivos clareza, simplicidade, portabilidade e interoperabilidade.
3) O documento fornece exemplos básicos de como escrever programas em Python, utilizando conceitos como expressões, liter
Baixe no formato PDF, TXT ou leia on-line no Scribd
0 notas0% acharam este documento útil (0 voto)
94 visualizações
Python
1) O documento apresenta um minicurso sobre a linguagem de programação Python, abordando tópicos como a história, objetivos, características e conceitos básicos da linguagem.
2) Python é uma linguagem dinâmica e de múltiplos paradigmas desenvolvida por Guido van Rossum e mantida por uma fundação. Ela tem como objetivos clareza, simplicidade, portabilidade e interoperabilidade.
3) O documento fornece exemplos básicos de como escrever programas em Python, utilizando conceitos como expressões, liter
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 66
Minicurso de Python
Prof. Tlio Toffolo
http://www.toffolo.com.br
Baseado no trabalho de Alberto A.S. Lopes Apresentao no II SSPGCC Sobre o Minicurso Referncia Bibliogrfica Lutz, M. e Ascher, D. Aprendendo Python, 2 ed. Bookman Sugesto de leitura Borges, L. E. Python para desenvolvedores http://ark4n.wordpress.com/python/ Pilgrim, M. Dive into Python http://diveintopython.org/ Tutorial do Python em http://docs.python.org/tutorial/ Demais materiais referenciados em http://www.python.org/doc/, em especial os documentos em portugus em http://wiki.python.org/moin/PortugueseLanguage 2 A linguagem Python Criada e conduzida por Guido von Rossum Mantida atualmente pela Python Software Foundation, em um processo comunitrio Mudanas fundamentais so discutidas em comunidade Aprovao final das mudanas revisada pelo criador Curiosidade O nome Python vem do grupo de humor ingls Monty Python
3 Objetivos da linguagem Clareza e simplicidade do cdigo Portabilidade Multi-propsito Multi-paradigma Linguagem Dinmica Interoperabilidade com outras linguagens
4 Clareza e Simplicidade Eliminao de delimitadores de bloco Recuo sinttico Tipagem dinmica Gerenciamento de memria automtico Parmetros default 5 Como um programa em Python? # -*- coding: utf-8 -*-
import sys
print u"Bem vindo ao Python, verso %s" % sys.version print u"Digite um nmero inteiro:", n = int(raw_input()) for i in range(n): print u"Mensagem %s" % i
print u"Obrigado, e at logo! 6 Modelo de execuo baseado em mquina virtual Para executar em certa plataforma, basta haver um interpretador Python disponvel Windows, MAC, Linux, Unix bsicos Jython ! Python para Java IronPython ! Python para .NET PyObjC ! Python para Cocoa Portabilidade 7 Python inicialmente foi criada para ser usada como linguagem de script de shell, no sistema operacional Amoeba Atualmente, pode ser usada em diversos domnios de aplicao Aplicativos desktop (Tk/Tcl, wxPython, Jython, IronPython) Aplicativos web (Django, Grok, etc.) Web Services Python usada hoje entre outros no Youtube, Google, Globo.com, etc. Multi-propsito 8 Python suporta construes principalmente nos paradigmas de programao Imperativa (estruturada) " Funes, estruturas de controle, mdulos Orientada a objetos " Classes, objetos Funcional " Manipulao de listas Multi-paradigma 9 No Python, tudo um objeto As variveis atuam como ponteiros No Python, tudo ocorre em tempo de execuo Os objetos no Python possuem uma estrutura dinmica Atributos podem ser acrescentados em tempo de execuo Classes podem ser modificadas em tempo de execuo Linguagem Dinmica 10 Mdulos do Python podem ser implementados em cdigo nativo E, portanto, escrito em linguagens como C++, C, etc. Programas em Python podem realizar chamadas ao sistema operacional, iniciar processos, etc. Implementaes da Mquina Virtual Python em outras tecnologias podem oferecer acesso a bibliotecas Programas em Python que rodam em Jython tm acesso biblioteca padro Java O mesmo ocorre com o IronPython (bibliotecas do .NET Framework) e PyObjC (bibliotecas Cocoa) Interoperabilidade 11 Tipagem dinmica dificulta a documentao e o entendimento de um sistema de maior tamanho e complexidade Linguagem dinmica dificulta a programao com base em contratos A ausncia do suporte a interfaces na linguagem, por exemplo, torna menos formal a declarao de componentes Ausncia de bons ambientes de desenvolvimento integrado vinha dificultando sua adoo
Crticas ao Python 12 Execuo de um programa Python 13 .py .pyc Realizados automaticamente pelo interpretador do python Criao do programa em Python Compilao Execuo do cdigo Interpretador interativo do Python Use CTRL+D para sair (ou CTRL+Z no Windows) No prompt >>> voc tem duas opes " Digitar um comando " Digitar uma expresso As expresses so avaliadas e o resultado apresentado na linha abaixo, como a representao do resultado Os comandos so realmente executados, afetando todo o ambiente de execuo Iniciando o Python 14 Expresses aritmticas +, -, *, / // ** Expresses de comparao >, <, >=, <=, ==, != Expresses lgicas and, or, not Expresses bsicas 15 Inteiros (long da linguagem C) 0, 123, 4444, 231 Longos (inteiros de preciso arbitrria - bignum) 0L, 231L, 4444L (o L pode ser mnusculo, mas bom evitar) Ponto flutuante 1.23, 444.4, 123.4e+56 Inteiros podem ser em hexa ou octal 0xFF, 0xbabaca, 0123, 02222, 010 Literais 16 Literais Nmeros complexos 100 + 2j Strings (delimitados com aspas ou apstrofos) tulio, toffolo Booleans True ou False (mas o Python considera como verdadeiro, alm de True, qualquer valor diferente de 0, None, ou estruturas de dados vazias) Referncia a nenhum objeto (equivalente a NULL) None 17 print (comando da linguagem) A expresso depois do print avaliada Resultado impresso na sada padro Se o print terminar com uma vrgula, no h quebra de linha ao final (s um espao) Se aps o print houver expresses separadas por vrgula, todas sero impressas, separadas por espao NO a mesma coisa que a representao do resultado Primeiro comando bsico 18 Primeira funo bsica raw_input (funo da linguagem) uma funo cujo parmetro uma string (prompt) O retorno string Voc pode converter com as funes da linguagem int, float, bool, longpyth 19 # -*- coding: utf-8 -*- Coloque na primeira linha para indicar a codificao do arquivo Comentrios Comentrios comeam com o caracter # (fora de um literal string) e vo at o final da linha Espaos em branco e tabulaes so ignorados, exceto no comeo da linha (quando marcam o recuo sinttico) Lembre-se de manter o recuo sinttico consistente Decida logo entre utilizar tabulaes ou espaos !!! Orientaes bsicas para escrever programas 20 Orientaes bsicas para escrever programas Caso precise de mais de uma linha para escrever apenas uma linha lgica, coloque uma barra no final. Exemplo: x = 12 + 20 + 30 + \ 40 + 60 + 99 Observaes: A linha lgica tambm continua se a linha fsica termina em uma lista (parmetros de uma funo, por exemplo) Ou ainda, se termina em um literal string de delimitadores triplos no fechado 21 Orientaes bsicas para escrever programas possvel fazer atribuies utilizando tuplas Exemplo: >>> a, b = 10, 20
Qual ser o valor de a? Qual ser o valor de b?
22 As strings no Python so delimitadas por apstrofos ou aspas Permite mais facilmente usar os delimitadores dentro das strings Exemplo: Eat at Joes No pode haver quebras de linhas, a no ser que as strings sejam delimitadas por aspas ou apstrofos triplos """ Sobre este documento O Python uma linguagem muito boa """ Strings 23 As strings pode ser prefixadas por u ou r u"Este um literal unicode" r"Este um literal de string cru (no interpreta \)" ru"Este um literal unicode cru Strings podem ser convertidas de e para unicode com as funes internas str e unicode Strings 24 Concatenao alfa + beta, Hello + world Note que dois literais string justapostos subentende-se como concatenados, como Mar portuguez Repetio Liga*30 Busca simples dado in soldado Operaes bsicas com strings 25 Os strings podem ser manipulados com o operador de indexao alberto[2] retorna b Mas isso no pode ser usado para alterar o string Strings so consideradas imutveis! (ser explanado mais adiante) Os valores de ndice sempre comeam com 0 O operador de indexao no Python muito poderoso, possuindo diversas opes: Slices 26 Para todos os exemplos a seguir, considere que: alfa = abcdefghijklmnopqrstuvwxyz Obteno de um determinado elemento alfa[10] retorna k ndices negativos: -1 considerado o ltimo elemento alfa[-1] retorna z, alfa[-26] retorna a Indicar um nico ndice fora do tamanho d erro alfa[300] ou alfa[-27] do erro Slices 27 Slices Dois ndices separados por dois pontos retornam uma substring incluindo o caractere do primeiro ndice e excluindo o caractere do segundo alfa[0:3] retorna abc alfa[2:10] retorna cdefghij alfa[-24:-16] tambm retorna cdefghij Se o primeiro ndice corresponder a um caracter posterior ao do primeiro ndice, nada retornado alfa[3:0] retorna 28 Se o segundo ndice um valor alm dos limites, o resultado o mesmo de indicar a ltima posio alfa[25:3000] retorna yz Se o primeiro ndice no for indicado, o default a primeira posio alfa[:2] retorna ab Se o segundo ndice no for indicado, o default o ndice posterior ao da ltima posio alfa[20:] retorna uvwxyz Slices 29 Um terceiro valor pode ser indicado como o passo alfa[0:5:2] retorna ace Um passo negativo pode ser indicado para retornar a sequncia invertida alfa[6:2:-1] retorna gfed Repare que agora o primeiro ndice deve posterior ao segundo E que o ltimo caracter retornado corresponde posio posterior do segundo ndice Invertem tambm os defaults dos dois primeiros ndices Slices 30 O que retorna: alfa[::] alfa[:] alfa[] alfa[10:] alfa[10::] alfa[:10:] alfa[2::2] alfa[:2:2] alfa[:2:-2] Pergunta 31 O Python usa o operador % para a operao formatao de string O operando do lado esquerdo uma string de formato O operando do lado direito um objeto ou uma tupla de objetos (uma lista de objetos entre parnteses, separada por vrgulas) O resultado uma string no qual o valor do objeto inserido no string de formato, em posies marcadas por sequncias do tipo %!, onde ! um cdigo de formatao Funciona igual ao printf Formatao de strings 32 Smbolo Descrio %s str(objeto) %d Nmero inteiro %x Inteiro no formato hexa %f Float (muito usado com o nmero de casas: %.2f formata para duas casas decimais) Exemplos comuns de cdigos de formatao 33 # -*- coding: utf-8 -*-
peso = 85.542 idade = 25 nome = u"Tlio" print "%s tem %d anos e pesa %.1fkg" % (nome, idade, peso) Nome Descrio str Converte um valor em string unicode Converte um valor em unicode repr Retorna a representao em string do objeto len Tamanho do string (ou da lista, da tupla, etc.) Funes teis com strings 34 Estruturas de controle Principais estruturas de controle de cdigo: if, elif, else, while, for As estruturas utilizam a identao e operadores de comparao: 35 # -*- coding: utf-8 -*-
a = 1 if (a == 1): print "a = 1" elif (a == 2 or a == 3): print "a = 2 or a = 3" else: print u"condio else" # -*- coding: utf-8 -*-
i = 0 while (i < 10): printf "i = %d" % i
for j in range(10): printf "j = %d" % j,
Estruturas de controle A funo range gera uma lista contendo os valores passados por parmetro. Testem: range(10), range(0, 10) e range(2, 10) range(0, 100, 5) Obtendo o n-simo item da sequncia de Fibonacci: 36 # -*- coding: utf-8 -*-
n = 10 # n-simo item da sequncia a, b = 0, 1 for i in range(n): a, b = b, a+b print "fib[%d] = %d" % (n, b) No Python tudo um objeto Todos os valores, mesmo nmeros, so objetos Um objeto uma mquina de computao Possui estado Realiza determinadas computaes Cada objeto de um tipo O tipo do objeto determina quais as informaes que compem o objeto O tipo tambm determina as computaes que o objeto pode executar Valores como objetos 37 Valores como objetos Os objetos possuem atributos Um atributo a de um objeto b nada mais do que um objeto b associado a a Pode-se usar o operador ponto para identificar atributos de um objeto Por exemplo, os objetos do tipo int possuem os atributos real e imag, indicando os valores das partes real e imaginria: >>> a = 10 >>> a.imag 0 >>> a.real 10 38 Referncias As variveis guardam apenas referncias a objetos Se uma varivel aponta para um objeto, e receber uma atribuio de outro objeto, perde a referncia do primeiro objeto Quando nenhuma varivel apontar para um certo objeto, este objeto ser excludo pelo garbage collector Garbage collector = coletor de lixo Python faz todo o gerenciamento de memria automaticamente 39 Repetindo: a varivel guarda sempre a referncia (i.e., o endereo na memria) de um objeto a=1 aloca o objeto 1 na memria, e guarda a referncia dele na varivel a b = a coloca em b a mesma referncia que h em a b = 11 aloca o objeto 11 na memria, e guarda a referncia dele na varivel b O prompt interativo sempre mostra a representao do valor do objeto apontado pela referncia indicada (sempre imprime o valor e no o ponteiro) Referncias 40 Alguns objetos so de tipos imutveis As strings e os nmeros so do tipo imutvel No possvel alterar, acrescentar ou tirar atributos deles Exemplo: alfa = Tulio alfa[0] = J O que se pode fazer obter novos objetos imutveis por meio de operaes, e atribu-los s variveis. Objetos imutveis 41 retorna um erro: impossvel fazer a atribuio Exemplo de operaes com objetos imutveis Alterando o item na posio 0 de uma string Alterando o item na posio 1 de uma string 42 # -*- coding: utf-8 -*-
alfa = u'Tlio' alfa = alfa[0:1] + u'' + alfa[2:] Funes so sempre iniciadas pela palavra def seguida do nome da funo e seus argumentos: Uma funo pode retornar um ou vrios valores (tuplas) Exemplo: Funes 43 def metade(x): return x/2
def metade_e_dobro(x): return x/2, x*2 Funes: criando uma funo Fibonacci Crie uma funo que imprime os n primeiros elementos da sequncia de fibonacci Teste a funo para n = 10 44 # -*- coding: utf-8 -*-
def fib(n): a, b = 0, 1 for i in range(n): print "fib[%d] = %d" % (i, b) a, b = b, a+b
fib(10) # executando a funo fib com n = 10 Conceitualmente, um mtodo de um objeto um procedimento que o objeto executa, ao receber uma mensagem correspondente Mtodos so acessados com o operador . O mtodo dir() retorna uma lista com todos os mtodos disponveis para um objeto a = 1 dir(a) dir(1) dir(Tulio) Mtodos de um objeto 45 Exemplo: mtodos teis em strings S.capitalize() S.ljust(width [, fill]) S.center(width [, fill]) S.lower() S.count(sub [, start [, end]]) S.lstrip([chars]) S.decode([encoding[,errors]]) S.encode([encoding [,errors]]) S.maketrans(x[, y[, z]]) S.endswith(suffix [, start [, end]]) S.partition(sep) S.expandtabs([tabsize]) S.replace(old, new [, count]) S.find(sub [, start [, end]]) S.rfind(sub [,start [,end]]) S.format(fmtstr, *args, **kwargs) S.rindex(sub [, start [, end]]) S.index(sub [, start [, end]]) S.rjust(width [, fill]) S.isalnum() S.rpartition(sep) S.isalpha() S.rsplit([sep[, maxsplit]]) S.isdecimal() 46 Exemplo: mtodos teis em strings S.rstrip([chars]) S.isdigit() S.split([sep [,maxsplit]]) S.isidentifier() S.splitlines([keepends]) S.islower() S.startswith(prefix [, start [, end]]) S.isnumeric() S.strip([chars]) S.isprintable() S.swapcase() S.isspace() S.title() S.istitle() S.translate(map) S.isupper() S.upper() S.join(iterable) S.zfill(width) 47 As listas so objetos que guardam valores indexados por nmeros (iniciados em 0) inteiros O tamanho da lista varivel e listas podem ser aninhadas (uma dentro da outra) Em cada posio da lista est a referncia a um objeto de qualquer tipo possvel ter em uma nica lista valores inteiros, booleanos e strings, por exemplo Listas 48 Listas Os literais de lista so delimitados entre colchetes [1,a,True] Os operadores len, concatenao (+), repetio (*), e slices podem ser utilizados em listas Diferentemente das strings, as listas so mutveis As listas podem inclusive ser alteradas por atribuio a slices
49 Exemplo a = [1,b,True,[2,3]] " Veja que listas podem ser aninhadas (uma dentro da outra) a[0] retorna o qu? a[0][1] retorna o qu? a[3] retorna o qu? a[3][1] retorna o qu? Faa a[0] = [5,6,7] e observe o que acontece Faa a[0:0] = [5,6,7] e veja o que acontece Listas 50 Mtodos: sort ordena os itens append anexa itens extend anexa itens de uma lista ao final da lista pop retira o ltimo elemento e o retorna " Dica: pop e append implementam uma pilha !!! Comando del exclui um elemento Qual seria a diferena entre append e extend quando o parmetro uma lista? Operaes de interesse para listas 51 Alterar o valor de uma posio da lista (a[0] por exemplo) altera apenas a lista a = alfa b = [0,1,a,c] b[2] = d Qual fica sendo o valor de b? E o valor de a? Cuidado! Alerta! 52 Funes: criando uma funo Fibonacci Crie uma funo que retorna os n primeiros elementos da sequncia de fibonacci Teste a funo para n = 10 53 # -*- coding: utf-8 -*-
def fib(n): r = [] a, b = 0, 1 for i in range(n): r.append(a) a, b = b, a+b return r
fib(10) # executando a funo para n = 10 Dicionrios so estruturas de dados que associam pares de objetos chave e valor Exemplo: d1 = {nome: Alberto, sobrenome:Lopes} d2 = {a: 1, 2: b} Repare que qualquer objeto pode ser chave e qualquer objeto pode ser valor Dicionrios 54 Dicionrios A indexao pode ser feita colocando o valor da chave entre parnteses d1[nome] retorna Alberto d2[2] retorna b No possvel fazer slicing em um dicionrio! Note que o dicionrio no ordenado 55 possvel alterar um valor usando a atribuio a uma chave especfica: d3[2] = alfa Com isso, possvel tambm inserir chaves inexistentes no dicionrio: d3[nova_chave] = novo_valor Com o mtodo keys retorna-se a lista de chaves Com o mtodo values retorna-se a lista de valores Dicionrios 56 O mtodo get pode ser usado para recuperar o valor de uma chave, com a vantagem de no dar erro se a chave no existir d2.get(3, nada) retorna nada se a chave 3 d2[3] causa um erro se a chave 3 no existir O mtodo update concatena o dicionrio passado como parmetro ao dicionrio chamado Tambm possvel criar um dicionrio com a funo dict d = dict(nome=Alberto, sobrenome=Lopes) Aqui a desvantagem que as chaves precisam ser strings Dicionrios 57 So sequncias imutveis de objetos indexveis pelo deslocamento (como nos strings e nas listas) Funcionam basicamente como as listas, exceto por serem imutveis (no podem ser modificadas) Exemplo: a = 10 b = 20 c = 30 x = a,b,c x ser uma tupla com trs itens: (10, 20, 30) Tuplas 58 Ler arquivos Utilizamos a funo open, que funciona de forma anloga a fopen em C. Mtodos: readline l uma linha read l todo o arquivo write escreve no arquivo close fecha o arquivo Exemplo: 59 i = 100 x = open('arquivo.txt', 'w') x.write('imprime texto e o inteiro "%d" no arquivo' % i) x.close() Palavras reservadas Palavras reservadas: and, del, from, not, while, as, elif, global, or, with, assert, else, if, pass, yield, break, except, import, print, class, exec, in, raise, continue, finally, is, return, def, for, lambda, try Alguns formatos de identificadores so usados de forma especial pelo interpretador: _ o resultado da ltima avaliao no interpretador interativo __*__ nomes de sistema __* membros privados das classes 60 Mais sobre referncias Dois objetos podem ser comparados de duas formas a == b: verdadeiro se a e b tiverem o mesmo valor a is b: verdadeiro se a e b so o mesmo objeto Isso especialmente importante para objetos mutveis Listas, strings, etc. podem ser comparados usando <, >, etc. Lembre-se de que None um valor que significa referncia para objeto nenhum 61 Mais tcnicas de iterao Vimos o uso do for com sequncias for i in [1,3,5,8,3]: print i for i in range(5): print i possvel ainda ter mais de uma varivel de iterao for a,b,c in [[1,2,3],'456',(7,8,9)]: print b For a,b in range(5), range(5,10): print a, b 62 Mais tcnicas de gerao de listas Seja: lis = [10, 20, 5, 11, 100, 200, 1000] Se quisermos gerar uma lista com todos os valores menores do que 30 multiplicados por 3, fazemos: Ou podemos fazer simplesmente 63 r = [] for x in lis: if x < 30: r.append(x*3) r = [x*3 for x in lis if x < 30]
Perguntas? Prximos minicursos Desenvolvendo sites usando Python e Django Amanh s 16h Desenvolvimento de jogos MMORPG usando Python Sbado, s 16h 65 66