Tutorial Python ed. #2

1.461 visualizações

Publicada em

Minicurso em Medianeira (PR), dia 24/05/2012, durante o MEDITEC, promovido pela UTFPR-MD.

Publicada em: Tecnologia
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
1.461
No SlideShare
0
A partir de incorporações
0
Número de incorporações
1
Ações
Compartilhamentos
0
Downloads
74
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Tutorial Python ed. #2

  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. 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/
  6. 6. 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)”.
  7. 7. NADA! Python foi desenvolvido como umprojeto open source, sem finslucrativos e gerenciado pela PSF(Python Software Foundation)
  8. 8. 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
  9. 9. http://www.python.org/about/success/ Google NASA Yahoo InfoSeek MCI Worldcom IBM Higway Industrial Light and Magic AstraZeneca Honeywell ...
  10. 10. Governo FederalPetrobrasSerproEmbratelGlobo.comStarOneConectivaCPqDAsyncHaxentUTFPR...
  11. 11. Vários projetos da comunidade SoftwareLivre Blender LibreOffice Zope/Plone MoinMoin Mailman BitTorrent Chandler Gimp Plone Django OpenERP inVesalius
  12. 12. 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!
  13. 13. 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
  14. 14. 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
  15. 15. 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)
  16. 16. De altíssimo nível epoderosa Elegante, com sintaxesimples e concisa Fácil de aprender,“cabe” no seu cérebro ! Multiparadigma:Funcional, Procedural eOrientado a Objetos Possui suporte nativo aestruturas de dadoscomplexas
  17. 17. 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.
  18. 18. Código é muito mais lido que escrito! Readability importa! (muito) Python te ajuda a escrever código maislegível
  19. 19. 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
  20. 20. Inúmeros Geany Vim Aptana Komodo NetBeans PyCharm PyDev (Eclipse) Wing IDE Pyshield Spyder MS-Visual Studio Etc.
  21. 21. Ninja IDE (Ninja Is Not Just Another IDE) Multiplataforma Editor de código poderoso Gerenciamento de Projetos Plugins http://ninja-ide.org/
  22. 22. 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
  23. 23. Variáveis não são “caixas” com valores Variáveis são “rótulos” colados em objetosSão criadas pela atribuição Operador =
  24. 24. 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)
  25. 25. 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
  26. 26. 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
  27. 27. 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
  28. 28. 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
  29. 29. Exemplos
  30. 30. 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
  31. 31. 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/
  32. 32. A estrutura dos blocos é definida pelaindentação Não misturar tabulações com espaços!!!
  33. 33. Quando o caractere # aparece, o interpretadorignora o restante do código até o final da linha Isso não vale dentro de strings Para várias linhas use asplas triplas(docstring) Será útil para documentar funções, classes, módulos, etc.
  34. 34. 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
  35. 35. Também são tipos numéricos básicos float = ponto flutuante de 32 bits complex= para números complexos
  36. 36. Construtores ou funções de conversão int (n) float (n) complex (n) abs (n)
  37. 37. Básicos +, -, *, /, **Inteiros %, //Bit a Bit &, |, ^, ~, >>, <<
  38. 38. Módulo math e outros
  39. 39. 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++
  40. 40. Constantes True e False Ocorre conversão automática entre tipos Conversão explícita pode ser feita com bool(x)
  41. 41. Relacionais >, <, >=, <=, ==, !=, is, is not Sempre retornam um boolLógicos and, or, not
  42. 42. 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
  43. 43. 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
  44. 44. 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!
  45. 45. Use caracteres de formatação, como na printfde C %s, %d, %f são os mais comuns
  46. 46. Usando type
  47. 47. Usando type
  48. 48. 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ênteses CUIDADO: em certos contextos os parênteses ao redordas tuplas podem ser omitidos!
  49. 49. 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 []
  50. 50. Facilmente você pode criar uma lista numéricacom range([inicio,] fim[, passo]) Retorna uma sequência numérica conforme os argumentos dados Normalmente usada em laços for
  51. 51. 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?
  52. 52. 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
  53. 53. 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
  54. 54. Entrada com inputSaída com print
  55. 55. ifif (expressao): bloco[elif (expressao): bloco][else: bloco]
  56. 56. exemplo
  57. 57. forfor variavel in sequencia: bloco[else: bloco] whilewhile (expressao): bloco[else: bloco]
  58. 58. Exemplo
  59. 59. Modularizam o código Comando def inicia a definição de uma função Comando return marca o fim da execução dafunção e define o resultado a ser devolvido Pode ser None
  60. 60. Exemplo
  61. 61. Ei, não vamos complicar!
  62. 62. Estourar a pilha de execução é “fácil”E aí, tentou fat(1000)?
  63. 63. Mudando o tamanho da pilha de ativação
  64. 64. 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)
  65. 65. Operações de E/S são realizadas pelo SO O módulo os possui diversas variáveis efunções que ajudam um programa Pythonadequar-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
  66. 66. Lembra? Multiparadigma! Inclui Orientação aObjetos Tudo em python é objeto. Mesmo!
  67. 67. Simplesmente defina a classe e use-a! Classe (class) é um tipo de dados especialque define 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
  68. 68. Para os métodos, defina funções dentro doescopo de class
  69. 69. A função __init__ serve como construtor Nos métodos, o parâmetro self referencia ainstância atual NÃO É passado explicitamente
  70. 70. Não é necessário liberar objetosexplicitamente Esqueça free ou delete! Coletor automático de lixo, lembra?
  71. 71. Herança, métodos de classe, métodosestáticos, atributos “privados”,propriedades, etc. Mas, ...I´ll be back in #2!
  72. 72. TCL-TK é parte integrante, via tkinterDiversos outros bindings de frameworks wxWidgets QT GTK etc.
  73. 73. Módulo CSV (Comma-Separated Values)
  74. 74. “List comprehensions” Produz uma lista a partir de qualquer objeto iterável Sintaxe inspirada em Haskell
  75. 75. 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)
  76. 76. Baterias: urllib e re

×