Introdução a linguagem Python 2.7

963 views

Published on

Published in: Software
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
963
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
20
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Introdução a linguagem Python 2.7

  1. 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. 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. 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 Pythons 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. 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. 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. 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/
  7. 7. Interpretação e Compilação
  8. 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. 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. 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. 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)
  12. 12. Conversões básicas de tipo • int(), float(), str(), bool(), long() >>> int(2.71) >>> float(5) >>> str(255) >>> str(True) 2 5.0 255 True >>> bool(1) >>> bool(0) >>> bool(43) >>> bool() True False True False >>> bool(„sou verdadadeiro) >>> long(2.56) True 2L>>> float(233333333333337777777777778888888888999999999999933334421L)2.3333333333333778e+56 Testem no interpretador!
  13. 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. 14. Tipos-classe: StringsStrings: strings padrões são imutáveis:banda1 = „Led Zeppelin‟ #String simplesbanda2 = “ „Rachmaninov‟ ” #String simpleslinhas=“””Essa e uma stringem multiplas linhas.”””>>> print linhasEssa e uma stringem multiplas linhas
  15. 15. Tipos-classe: Strings -> Operações• +(concatenação) e *(multiplicação)>>> banda = „Arctic‟>>> banda + ‟ Monkeys!‟„Arctic Monkeys!‟>>> banda * 3„ArcticArcticArctic‟
  16. 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 fosseum cachorro, morderia.‟• Traduza essa mensagem:msg=‟02 42tr0n4ut42 ch3g4r4m.‟
  17. 17. Tipos-classe: Strings
  18. 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!‟ % qtdDinheirosEu tenho 23 dinheiros!>>> print „Eu tenho %x hexas!‟ % qtdDinheirosEu tenho 17 hexas!>>> print „Eu tenho %o octais!‟ % qtdDinheirosEu tenho 27 octais!
  19. 19. Tipos-classe: Strings mutáveis• Strings da classe UserString são mutáveis:from UserString import MutableString>>> a = MutableString( „Pascal =)‟ )>>> print aPascal =)>>> a[-1] = „(‟>>> print aPascal =(
  20. 20. Tipos-classe: Strings• Símbolos usados na interpolação:• %s: string.• %d: inteiro.• %o: octal.• %x: hexadecimal.• %f: real.• %e: real exponencial.• %%: sinal de percentagem.
  21. 21. Tipos-classe: ListasLista: são coleções heterogêneas de objetos, quepodem 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 qualquermomento. Listas podem ser fatiadas da mesmaforma que as strings, mas como as listas sãomutáveis, é possível fazer atribuições a itens da lista.
  22. 22. Tipos-classe: Listas -> MétodosAlguns 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. 23. Tipos-classe: Listas -> MétodosAlguns métodos/operações em listas:>>> lista.pop() #Implementa filas e pilhas0.7>>> lista[58, 1.9]>>> lista.pop(0) #índice58>>> lista = [1,2,3]>>> lista.insert(1,„intruso‟) # posição específica>>> lista[1, ‟intruso‟, 2, 3]
  24. 24. Tipos-classe: TuplasSemelhantes as listas, porém são imutáveis: não se podeacrescentar, apagar ou fazer atribuições aos itens.Utilidade: aloca memória de forma contínua, melhorandodesempenho. Indicado para utilização matemática.Sintaxe: <variável> = ()tuplita = (142857,‟Chico Buarque‟,u”Richard Dawkins”)tupra = Michael Jackson, "Howlin Wolf", JohnColtrane● A função list() transforma uma tupla em lista● A função tuple() transforma uma lista em tupla
  25. 25. Tipos-classe: Tuplas -> Métodos●algunsmétodos:●count() : conta quantos itens existe do valorpassado como paramêtro(serve para lista também):a = 1,1,3,3,4a.count(1)>> 2●index() : retorna a primeira posição que o valorpassado como paramentro aparece.a.index(3)>>2
  26. 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.
  27. 27. Tipos-classe: Dicionários
  28. 28. Tipos-classe: Dicionários -> Métodos• Exemplo de dicionário:>>> dic = {„pi‟: 3.1415, 42: “Douglas Adams”}>>> dic[„pi‟]3.1415>>> dic[42]„Douglas Adams‟>>> dic[„python‟] = „massa!‟>>> dic[„python‟]„massa‟>>> # se a chave não existir, retorna booleano False>>> dic.pop(„pi‟,False)3.1415>>> dic.pop(„pi‟,False)False>>> for chave,valor in dic.iteritems():... print chave,‟=>‟,valorpython => massa!42 => Douglas Adams
  29. 29. Tipos-classe: Dicionários -> Métodos>>> dic.get(42,‟Caso não existir retorne essa string‟)„Douglas Adams‟>>> dic[42]„Douglas Adams‟>>> dic.items()[(„python‟,‟massa‟), (42, „Douglas Adams‟)]>>> dic.keys()[„python‟,42]>>> dic.values()[„massa‟, „Douglas Adams‟]>>> dic.has_key(„python‟)True>>> dic.clear()>>> dic{}
  30. 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. 31. Tipos-classe: Booleanos>>> bool(0) >>> bool([])False False>>> bool(0.0) >>> bool(())False False>>> bool(„‟) >>> bool({})False False>>> bool(“”) Todo o resto é consideradoFalse verdadeiro, True
  32. 32. Tipos-classe: Booleanos -> Operadores Booleanos• and,or,not,is e in >>> 1 or False>>> True and True 1True >>> 0 or False>>> True or FalseTrue False>>> 4 in [1,4] >>> not TrueTrue False>>> a=1; b=a >>> not 1>>> a is b FalseTrue
  33. 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<=3True 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. 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. 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. 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. 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.
  38. 38. Funções• permite passagem de parâmetro por nome: Saída: #00ff00 #00ff00 #00ff00
  39. 39. Escopo das variáveis
  40. 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. 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. 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.
  43. 43. Laços de Repetição: forSaída:>>1 => Sócrates>>2 => Aristóteles>>3 => Platão>>4 => Descartes>>5 => Nietzsche
  44. 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. 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. 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. 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. 48. Módulo: mathimport math>>> math.trunc(5.6) #arredonda valor para baixo.5>>> math.log(math.e): #retorna o logaritmo do numero1.0>>> math.log(1024,2) # log de 1024 na base 210.0>>> math.factorial(5) #retorna o fatorial do numero dado.120>>> math.fabs(-5) #módulo de algum valor5.0>>> math.pi: #constante Pi3.141592653689793>>> math.e: #número de Euler2.718281828459045
  49. 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.
  50. 50. Orientação a Objetos: Classe
  51. 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. 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
  53. 53. Orientação a Objetos: Definindo uma classe
  54. 54. Orientação a Objetos: Definindo uma classePrivatizando variáveis de instância.
  55. 55. Orientação a Objetos: Definindo uma classeDentro da classe Saída:Fora da classe
  56. 56. Código-fonte = módulo?Ao fazermos a verificação do namespace __name__ comosendo o __main__, verificamos se estamos rodando o arquivofonte ou se estamos apenas importando-o
  57. 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.
  58. 58. Orientação a Objetos: HerançaDentro da classe
  59. 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. 60. Orientação a Objetos: Serialização• Importe o modulo picklepara salvar o objeto, sintaxe:pickle.dump(<objeto>,file(„<nomeArquivo>‟,‟w‟))para reabrir o objeto:a = pickle.load(file(„<nomeArquivo>‟))
  61. 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.
  62. 62. Funções Lambda (Programação Funcional)sintaxe:<funcao> = lambda <lista de variáveis>: <expressões >
  63. 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. 64. Tratamento de Exceçõesprint 1/0>>>Traceback (most recent call last): File "<input>", line 1, in ?ZeroDivisionError: integer division or modulo byzero
  65. 65. Tratamento de Exceçõestry: print 1/0except ZeroDivisionError: print Erro ao tentar dividir por zero.‘>>>Erro ao tentar dividir por zero.
  66. 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. 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. 68. “The Zen of Python” por Tim Peters• digite no Python:>> import thisps: in english.

×