Python tutorial-ed3

980 visualizações

Publicada em

Minicurso ministrado na Unipar-Cascavel, em 25 de setembro de 2012.

1 comentário
1 gostou
Estatísticas
Notas
Sem downloads
Visualizações
Visualizações totais
980
No SlideShare
0
A partir de incorporações
0
Número de incorporações
1
Ações
Compartilhamentos
0
Downloads
53
Comentários
1
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Python tutorial-ed3

  1. 1. é uma linguageminterpretada, interativa,funcional, orientada aobjetos, dinamicamentetipada e com gerenciamentoautomático de memória Similar, em certos aspectos, a Perl, Ruby, Scheme, Smalltalk e Tcl
  2. 2. Entre todas aslinguagens queaprendi, Python é aque menosinterfere entre mim eo problema. É a maisefetiva para traduzirpensamentos emações. Eric Raymond
  3. 3. Life is BetterWithout Braces. Bruce Eckel
  4. 4. Python has been animportant part of Googlesince the beginning, andremains so as the systemgrows and evolves. Todaydozens of Google engineersuse Python, and werelooking for more peoplewith skills in thislanguage. Peter Norvik
  5. 5. Course-Builder, Google
  6. 6. Guido van Rossum é referidopela comunidade python,desde 1995, comoBenevolent Dictator For Life(BDFL) Desde dezembro de 2005 Guido trabalha na Google, dedicando 50% do seu tempo com a linguagem www.python.org/~guido neopythonic.blogspot.com/
  7. 7. Não veio da cobra!"Over six years ago, in December1989, I was looking for a "hobby"programming project that would keepme occupied during the week aroundChristmas. My office ... would beclosed, but I had a home computer,and not much else on my hands. Idecided to write an interpreter for thenew scripting language I had beenthinking about lately: a descendant ofABC that would appeal to Unix/Chackers. I chose Python as a workingtitle for the project, being in a slightlyirreverent mood (and a big fan ofMonty Python´s Flying Circus)”.
  8. 8. NADA! Python foi desenvolvido como umprojeto open source, sem finslucrativos e gerenciado pela PSF(Python Software Foundation)
  9. 9. Para obter o interpretador Pythonacessarhttp://www.python.org/download/ Versões Python 2.7.3 foi liberada em 9 de abril de 2012 Python 3.2.3* foi liberada em 10 de abril de 2012
  10. 10. http://www.python.org/about/success/ Google NASA Yahoo InfoSeek MCI Worldcom IBM Higway Industrial Light and Magic AstraZeneca Honeywell ...
  11. 11. Governo FederalPetrobrasSerproEmbratelGlobo.comStarOneConectivaCPqDAsyncHaxentUTFPR...
  12. 12. Vários projetos da comunidade SoftwareLivre Blender LibreOffice Zope/Plone MoinMoin Mailman BitTorrent Chandler Gimp Plone Django OpenERP inVesalius
  13. 13. Web e Internet Database GUIs Científico e processamentonumérico Educação Programação de rede Construção e teste de software Desenvolvimento de jogos erenderização 3D Onde mais sua imaginação mandar!
  14. 14. Unix: HP-UX, Solaris ... Linux (freqüentemente pré-instalada) Mac OSX (sempre pré-instalada) Windows: 9x, ME, 2K, XP, Vista, Seven(ctypes, win32all) Apple iPhone Google Android
  15. 15. Compilação Híbrida como Java, programas Python sãocompilados, porém para uma linguagemintermediária, destinada a uminterpretador Isola Python de muitas das excentricidades das máquinas reais na qual ele roda provê um nível de portabilidade
  16. 16. Prazer em lhe conhecer!Cython onde existir um compilador C ISO/IEC 9899:1990Jython máquina virtual JavaPyPy Python implementado em PythonPython for .NET [Brian Lloyd], IronPython (da M$)Python for DelphiLunaticPython interoperando com LuaRuby/Python em Ruby importar módulos Python)
  17. 17. De altíssimo nível epoderosa Elegante, com sintaxesimples e concisa Fácil de aprender,“cabe” no seu cérebro ! Multiparadigma Funcional, Procedural e Orientado a Objetos Possui suporte nativo aestruturas de dadoscomplexas
  18. 18. Extensa biblioteca padrão Um módulo para o que vocêprecisar sys, random, re, datetime, calendar, csv, os, webbrowser, string, urlib, Tkinter, codecs, pickle, types, array, mutex, queue, zlib, gzip, md5, thread, socket, email, xml.dom, locale, etc.
  19. 19. Código é muito mais lido que escrito! Readability importa! (muito) Python te ajuda a escrever código mais legível
  20. 20. Python é case sensitive Linhas são delimitadas por enterTipagem é forte e dinâmica Não há declaração de variáveis como em C, Java, Pascal, etc. Você pode utilizar o interpretador em modointerativo ou seu IDE/editor favoritos
  21. 21. InúmerosGeanyVimAptanaKomodoNetBeansPyCharmPyDev (Eclipse)Wing IDEPyshieldSpyderMS-Visual StudioEtc.
  22. 22. Ninja IDE (Ninja Is Not Just Another IDE) Multiplataforma Editor de código poderoso Gerenciamento de Projetos Plugins http://ninja-ide.org/
  23. 23. Em Python, variáveis são referências aobjetos não guardam os objetos em si não têm tipo, mas os objetos aos quais elas se referem têm tipo São criadas dinamicamente Uma variável não pode ser utilizada em umaexpressão sem ter sido inicializada não existe “criação automática” de variáveis
  24. 24. Variáveis não são “caixas” com valores Variáveis são “rótulos” colados em objetosSão criadas pela atribuição Operador =
  25. 25. Atribuição não gera uma cópia do objeto Uma referência (variável) pode ser liberada Usando del Não existindo mais referências a um objeto, ele é removido da memória (garbage collector)
  26. 26. Normalmente para programas maiores vocêirá codificar arquivos (scripts) em um IDE extensão py O script pode ser executado diretamente dalinha de comando python oi.py Ou carregado para o interpretador interativo >>> import oi
  27. 27. Módulos são arquivos que contêm qualquerestrutura python (classes, funções, variáveis,etc.) e podem ser importados nos programas Quando importado pela primeira vez o módulo é compilado e um arquivo .pyc ou .pyo é gerado Um módulo é um objeto singleton Apenas uma instância é carregada em memória torna-se disponível globalmente para o programa que fez a importação
  28. 28. Funções importantes são disponibilizadas emmódulos da biblioteca padrão Ex.: módulo math tem funções como sin, cos, exp e outras Um módulo pode conter não só funções, mastambém variáveis ou classes Ex.: math define a constante pi Os módulos são localizados pelo interpretadorpela lista de diretórios em PYTHONPATH(sys.path), que inclui o diretório atual
  29. 29. Para usar os elementos de um módulo,comando import import modulo from modulo import nome1,...,nomen from modulo import * A importação ocorre apenas uma vez! Para carregar um módulo novamente (que tenha sido alterado) pode-se usar a função reload
  30. 30. Exemplos
  31. 31. Se um programa pode ser executado isoladoou importado dentro de outro, como distinguiras duas situações? O módulo principal de um programa tem a variável __name__ contendo “__main__” Para executar um código apenas se o módulo for o principal e não quando ele for importado
  32. 32. Python Enhancement Proposal São documentos padronizados da comunidadePython Uma PEP propõe um padrão, melhoria, funcionalidade, estrutura, explicações sobre funcionalidades, etc.Veja a PEP #0 http://www.python.org/dev/peps/pep-0000/
  33. 33. Um bloco inicia com : A estrutura dos blocos é definida pelaindentação A PEP #8 - Style Guide for Python Code - sugere 4 espaços Seja consistente Não misturar tabulações com espaços!!!
  34. 34. A partir do caractere #, o interpretador ignorao restante do código até o final da linha Isso não vale dentro de strings Para várias linhas use asplas triplas(docstring) Documentar funções, classes, módulos, etc.
  35. 35. Tipos básicos int = normalmente 32 bits long = limitado ao tamanho da memória Há promoção automática de int para long Divisão de inteiros em python < 3 resulta sempre int
  36. 36. Também são tipos numéricos básicosfloat = ponto flutuante de 32 bitscomplex= para números complexos
  37. 37. Construtores ou funções de conversão int (n) float (n) complex (n) abs (n)
  38. 38. Básicos +, -, *, /, **Inteiros %, //Bit a Bit &, |, ^, ~, >>, <<
  39. 39. Módulo math e outros
  40. 40. Representa o valor nulo Equivalente a False em operações booleanasAplicações típicas Valor default em parâmetros de funções Valor de retorno de funções que será descartado Como void de C/C++
  41. 41. Constantes True e FalseOcorre conversão automática entre tiposConversão explícita pode ser feita com bool(x)
  42. 42. Relacionais >, <, >=, <=, ==, !=, is, is not Sempre retornam um boolLógicos and, or, not
  43. 43. str – Sequência de bytes, com aacentuação dependente do encoding Delimitadas por aspas, apóstrofo ou três aspas ou três apóstrofos
  44. 44. Codificações iso-8859-1: padrão ISO Latin-1 iso-8859-15: idem, com símbolo € (Euro) cp1252: MS-Windows codepage 1252 ISO Latin-1 aumentado com caracteres usados em editoração eletrônica (‘’ “” •) utf-8: Unicode codificado em 8 bits compatível comASCII até o código 127 utiliza 2 bytes para caracteres não-ASCII padrão recomendado pelo W3C e está sendo adotado pela maioria dos sistemas
  45. 45. Constantes str ou unicode são interpretadassegundo a codificação declarada numcomentário especial no início do arquivo .py Nós (brasileiros) frequentemente lidamoscom textos não ASCII!
  46. 46. Use caracteres de formatação, como na printfde C %s, %d, %f são os mais comuns
  47. 47. Usando type
  48. 48. Usando type
  49. 49. Tuplas são sequências imutáveis não é possível modificar as referências contidas natupla Tuplas constantes são representadas comosequências de itens entre parêntesesCUIDADO: em certos contextos os parênteses ao redordas tuplas podem ser omitidos!
  50. 50. Listas são coleções de itens heterogêneos quepodem ser acessados sequencialmente ouindexados São mutáveis Constantes do tipo lista são delimitadas por colchetes []
  51. 51. Facilmente você pode criar uma lista numérica com range([inicio,] fim[, passo]) Retorna uma sequência numérica conforme os argumentosdados Normalmente usada em laços for *Na verdade retorna um iterator, em Python >= 3.x
  52. 52. Os tipos string, lista, tupla, buffer sãosequências Coleção ordenada e iterável de itens Operações s[i] = acessa um item s[-i] = acessa um item pelo final s+z = concatena s*n = produz n cópias de s concatenadas e in s = elemento e está em s? e not in s = elemento e não está em s?
  53. 53. Operações de slicing s[a:b] cópia de a (inclusive) até b (exclusive) s[a:] cópia a partir de a (inclusive) s[:b] cópia até b (exclusive) s[:] cópia total de s s[a:b:n] cópia de n em n itensAtribuição s[2:5] = [6,3,2,0] Aplicável somente em sequências mutáveis
  54. 54. Dicionários são estruturas de dados queimplementam mapeamentos coleções de pares chave:valor que podem ser recuperados pela chave A chave pode ser qualquer imutável
  55. 55. Entrada com inputSaída com print
  56. 56. ifif (expressao): bloco[elif (expressao): bloco][else: bloco]
  57. 57. exemplo
  58. 58. forfor variavel in sequencia: bloco[else: bloco] whilewhile (expressao): bloco[else: bloco]
  59. 59. Exemplo1Exemplo2
  60. 60. Modularizam o código Comando def inicia a definição de uma função Comando return marca o fim da execução da funçãoe define o resultado a ser devolvido Pode ser None
  61. 61. Exemplo
  62. 62. Ei, não vamos complicar!
  63. 63. Estourar a pilha de execução é “fácil”E aí, tentou fat(1000)?
  64. 64. Mudando o tamanho da pilha de ativação
  65. 65. Funções que possuem ainstrução yeld sãoGenerators Retornam objetos iterators É mantida uma memória do último valor retornado
  66. 66. Classe file representam arquivos Use a função open (ou construtor file(), sãosinônimos)abrir arquivo binário para leitura arq = file(‘imagem.png,rb)abrir arquivo texto para escrita arq = open(‘log.txt,w)abrir arquivo para acrescentar (append) arq = file(‘imagem.png,a)
  67. 67. Cuidado: arquivo é uma sequência de bytes! Deve ser interpretada por uma codificação de caracteres Ex.: tentativa de ler um arquivo UTF-8 aberto no MS-Windows É assumida codificação padrão (do sistema): CP-1252
  68. 68. Boa prática: especificar a codificação na abertura! O padrão é dependente da plataforma
  69. 69. Criando um bitmap de 2x2 pixels Não entraremos em detalhes (header, dib, data, etc.)do formato bmp NÃO FAÇA isso em sã consciência! Existem bibliotecas especializadas para tratamento de imagens: PIL Arquivo bmp de 70 bytes criado
  70. 70. Alterando o nosso bmp de 2x2 pixels NÃO FAÇA isso em sã consciência! Existem bibliotecas especializadas para tratamento de imagens: PIL Arquivo aberto para R/W Posicionado no byte 65 Escritos 3 bytes
  71. 71. Operações de E/S são realizadas pelo SO O módulo os possui diversas variáveis e funções queajudam um programa Python adequar-se ao SO os.getcwd() o diretório atual os.chdir(dir) diretório atual para dir os.sep caractere que separa componentes de um caminho (/ para Unix, para Windows) os.path.exists(path) diz se path é o nome de um arquivo existente
  72. 72. Módulo CSV (Comma-Separated Values)
  73. 73. Bibliotecas nativas para compressão Baterias gzip, bzip2, pkzip, etc.
  74. 74. Lembra? Multiparadigma! Inclui Orientação aObjetos Tudo em python é objeto. Mesmo!
  75. 75. Simplesmente defina a classe e use-a! Classe (class) é um tipo de dados especial quedefine como construir objetos Também armazena alguns dados que sãocompartilhados por todas as instâncias dessaclasse Instâncias são objetos criados segundo a definição da classe Python não separa a interface daimplementação da classe
  76. 76. Para os métodos, defina funções dentro doescopo de class
  77. 77. A função __init__ serve como construtor Nos métodos, o parâmetro self referencia ainstância atual NÃO É passado explicitamente
  78. 78. Não é necessário liberar objetosexplicitamente Esqueça free ou delete! Coletor automático de lixo, lembra?
  79. 79. Herança, métodos de classe, métodosestáticos, atributos “privados”,propriedades, etc. Mas, ...I´ll be back in #2!
  80. 80. TCL-TK é parte integrante, via tkinterDiversos outros bindings de frameworks wxWidgets QT GTK etc.
  81. 81. “List comprehensions”Produz uma lista a partir de qualquer objeto iterável Sintaxe inspirada em Haskell
  82. 82. Inverter a ordem das cartas baralho.reverse()Tirar a carta do topo baralho.pop()Adicionar 4 coringas baralho.extend([‘Coringa’]*4)Colocar em ordem baralho.sort() Pelo número de letras: baralho.sort(key=len)
  83. 83. Baterias: urllib e re

×