é uma linguagem                         interpretada, interativa,                         funcional, orientada a          ...
Entre todas as                                       linguagens que                                       aprendi, Python ...
Life is Better                                       Without Braces.                                                  Bruc...
Python has been an                                       important part of Google                                       si...
Prof. Fabio Alexandre Spanhol, M.Sc.   6
Guido van Rossum é referido                                       pela comunidade python,                                 ...
Não veio da cobra!                                       "Over six years ago, in December 1989,                           ...
Prof. Fabio Alexandre Spanhol, M.Sc.   9
NADA!  Python foi desenvolvido como umprojeto open source, sem finslucrativos e gerenciado pela PSF(Python Software Founda...
Para obter o interpretador Pythonacessarhttp://www.python.org/download/  Versões  Python 2.7.3 foi liberada em 9 de abril ...
http://www.python.org/about/success/ Google NASA Yahoo InfoSeek MCI Worldcom IBM Higway Industrial Light and Magic AstraZe...
Governo Federal Petrobras Serpro Embratel Globo.com StarOne Conectiva CPqD Async Haxent UTFPR ...Prof. Fabio Alexandre Spa...
Vários projetos da comunidade SoftwareLivre  Blender  OpenOffice  Zope/Plone  MoinMoin  Mailman  BitTorrent  Chandler  Gim...
Canivete suíço  Web e Internet  Database  GUIs  Científico e processamento numérico  Educação  Programação de rede  Constr...
Prof. Fabio Alexandre Spanhol, M.Sc.   16
Prof. Fabio Alexandre Spanhol, M.Sc.   17
Unix: HP-UX, Solaris ... Linux (frequentemente pré-instalada) Mac OSX (sempre pré-instalada) Windows: 9x, ME, 2K, XP, Vist...
SIM: Compilação Híbrida!  como Java, programas Python são compilados,  porém para uma linguagem intermediária,  destinada ...
De altíssimo nível e                                       poderosa                                        Elegante, com s...
Prof. Fabio Alexandre Spanhol, M.Sc.   21
Prof. Fabio Alexandre Spanhol, M.Sc.   22
Prof. Fabio Alexandre Spanhol, M.Sc.   23
Prof. Fabio Alexandre Spanhol, M.Sc.   24
Código é muito mais lido que escrito!  Readability importa! (muito)   Python te ajuda a escrever         código mais     ...
Extensa biblioteca padrão                                  Um módulo para o que você                                  prec...
Prof. Fabio Alexandre Spanhol, M.Sc.   27
33 palavras reservadas  Java tem 53 e C# 77   and           except               nonlocal   False   as            finall...
Prazer em lhe conhecer! Cython  onde existir um compilador C ISO/IEC 9899:1990 Jython  máquina virtual Java PyPy  Pytho...
Prof. Fabio Alexandre Spanhol, M.Sc.   30
Programas maiores codificados emarquivos (scripts)  normalmente usando um IDE  extensão py O script pode ser executado dir...
Inúmeros  Geany  Vim  Aptana  Komodo  NetBeans  PyCharm  PyDev (Eclipse)  Wing IDE  Pyshield  Spyder  MS-Visual Studio  Et...
Ninja IDE (Ninja Is Not Just Another IDE)  Multiplataforma  Editor de código poderoso  Gerenciamento de Projetos  Plugins ...
Prof. Fabio Alexandre Spanhol, M.Sc.   34
Prof. Fabio Alexandre Spanhol, M.Sc.   35
Python Enhancement Proposal  São documentos padronizados da comunidade  Python   Uma PEP propõe um padrão, melhoria,    f...
Python é case-sensitiveCada linha é delimitada por enterTipagem forte e dinâmica Não há declaração de variáveisAlguns oper...
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...
Variáveis não são “caixas” com valores  Variáveis são “rótulos” colados em objetos  São criadas pela atribuição  Operador ...
Atribuição não gera uma cópia do objeto  Uma referência (variável) pode ser liberada  Usando del   Não existindo mais ref...
Um bloco inicia com                   :  A estrutura dos blocos é definida pelaindentação A PEP #8 - Style Guide for Pytho...
Prof. Fabio Alexandre Spanhol, M.Sc.   42
A partir do caractere #, o interpretadorignora o restante do código até o final dalinha  Isso não vale dentro de strings P...
Inteiros x   = 10 y   = 56859898958711346465165798798715654000000000000**2 z   = y + x    3233048109594863662031421586618...
Usando typeProf. Fabio Alexandre Spanhol, M.Sc.   45
Usando typeProf. Fabio Alexandre Spanhol, M.Sc.   46
Tuplas Imutáveis (‘Fabio’,36, False, 89.2,186)Listas mutáveis [‘Fabio’,36, False, 89.2,186]Dicionários Chaves com valores ...
Entrada com inputSaída com printProf. Fabio Alexandre Spanhol, M.Sc.   48
ifif (expressao):   bloco[elif (expressao):   bloco][else:   bloco] Prof. Fabio Alexandre Spanhol, M.Sc.   49
exemploProf. Fabio Alexandre Spanhol, M.Sc.   50
Forfor variavel in sequencia:   bloco[else:   bloco] Whilewhile (expressao):   bloco[else:   bloco] Prof. Fabio Alexandre ...
Exemplo1Exemplo2Prof. Fabio Alexandre Spanhol, M.Sc.   52
Modularizam o código  Comando def inicia a definição de uma função  Comando return marca o fim da execução da  função e de...
ExemploProf. Fabio Alexandre Spanhol, M.Sc.   54
Prof. Fabio Alexandre Spanhol, M.Sc.   55
Ei, não vamos complicar!Prof. Fabio Alexandre Spanhol, M.Sc.   56
Estourar a pilha de execução é “fácil”   E aí, tentou fat(1000)?Prof. Fabio Alexandre Spanhol, M.Sc.       57
Mudando o tamanho da pilha de ativaçãoProf. Fabio Alexandre Spanhol, M.Sc.       58
Prof. Fabio Alexandre Spanhol, M.Sc.   59
Prof. Fabio Alexandre Spanhol, M.Sc.   60
Inverter a ordem das cartasbaralho.reverse()Tirar a carta do topobaralho.pop()Adicionar 4 coringasbaralho.extend([‘Coringa...
TCL-TK é parte integrante, via tkinter  Diversos outros bindings de frameworks   wxWidgets   QT   GTK   etc.Prof. Fabio Al...
Prof. Fabio Alexandre Spanhol, M.Sc.   63
Também tem!  Você pode fazer programação funcional sem  Lost in Stupid Parenthesis (LISP)Prof. Fabio Alexandre Spanhol, M....
Prof. Fabio Alexandre Spanhol, M.Sc.   65
Prof. Fabio Alexandre Spanhol, M.Sc.   66
Mostrando a Cobra - Breve Introdução à Linguagem Python
Upcoming SlideShare
Loading in...5
×

Mostrando a Cobra - Breve Introdução à Linguagem Python

551

Published on

Aula magna no Colegiado de Informática, IFPR - Assis Chateaubriand, 01/03/2013.

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

No Downloads
Views
Total Views
551
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
10
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Mostrando a Cobra - Breve Introdução à Linguagem Python

  1. 1. é uma linguagem interpretada, interativa, funcional, orientada a objetos, dinamicamente tipada e com gerenciamento automático de memória Similar, em certos aspectos, a Perl, Ruby, Scheme, Smalltalk e TclProf. Fabio Alexandre Spanhol, M.Sc. 2
  2. 2. Entre todas as linguagens que aprendi, Python é a que menos interfere entre mim e o problema. É a mais efetiva para traduzir pensamentos em ações. Eric RaymondProf. Fabio Alexandre Spanhol, M.Sc. 3
  3. 3. Life is Better Without Braces. Bruce EckelProf. Fabio Alexandre Spanhol, M.Sc. 4
  4. 4. Python has been an important part of Google since the beginning, and remains so as the system grows and evolves. Today dozens of Google engineers use Python, and were looking for more people with skills in this language. Peter NorvikProf. Fabio Alexandre Spanhol, M.Sc. 5
  5. 5. Prof. Fabio Alexandre Spanhol, M.Sc. 6
  6. 6. Guido van Rossum é referido pela comunidade python, desde 1995, como Benevolent Dictator For Life (BDFL) De dezembro de 2005 a 2012 Guido trabalhou na Google, dedicando 50% do seu tempo com a linguagem  7/12/2012 passou a trabalhar na Dropbox  www.python.org/~guido  neopythonic.blogspot.com/ 7Prof. Fabio Alexandre Spanhol, M.Sc.
  7. 7. Não veio da cobra! "Over six years ago, in December 1989, I was looking for a "hobby" programming project that would keep me occupied during the week around Christmas. My office ... would be closed, but I had a home computer, and not much else on my hands. I decided to write an interpreter for the new scripting language I had been thinking about lately: a descendant of ABC that would appeal to Unix/C hackers. I chose Python as a working title for the project, being in a slightly irreverent mood (and a big fan of Monty Python´s Flying Circus)”.Prof. Fabio Alexandre Spanhol, M.Sc. 8
  8. 8. Prof. Fabio Alexandre Spanhol, M.Sc. 9
  9. 9. NADA! Python foi desenvolvido como umprojeto open source, sem finslucrativos e gerenciado pela PSF(Python Software Foundation)Prof. Fabio Alexandre Spanhol, M.Sc. 10
  10. 10. 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.3.0* foi liberada em 29 de setembro de 2012Prof. Fabio Alexandre Spanhol, M.Sc. 11
  11. 11. http://www.python.org/about/success/ Google NASA Yahoo InfoSeek MCI Worldcom IBM Higway Industrial Light and Magic AstraZeneca Honeywell ...Prof. Fabio Alexandre Spanhol, M.Sc. 12
  12. 12. Governo Federal Petrobras Serpro Embratel Globo.com StarOne Conectiva CPqD Async Haxent UTFPR ...Prof. Fabio Alexandre Spanhol, M.Sc. 13
  13. 13. Vários projetos da comunidade SoftwareLivre Blender OpenOffice Zope/Plone MoinMoin Mailman BitTorrent Chandler Gimp Plone Django OpenERP inVesaliusProf. Fabio Alexandre Spanhol, M.Sc. 14
  14. 14. Canivete suíço Web e Internet Database GUIs Científico e processamento numérico Educação Programação de rede Construção e teste de software Desenvolvimento de jogos e renderização 3D Onde mais sua imaginação mandar!Prof. Fabio Alexandre Spanhol, M.Sc. 15
  15. 15. Prof. Fabio Alexandre Spanhol, M.Sc. 16
  16. 16. Prof. Fabio Alexandre Spanhol, M.Sc. 17
  17. 17. Unix: HP-UX, Solaris ... Linux (frequentemente pré-instalada) Mac OSX (sempre pré-instalada) Windows: 9x, ME, 2K, XP, Vista, Seven(ctypes, win32all) Apple iPhone Google AndroidProf. Fabio Alexandre Spanhol, M.Sc. 18
  18. 18. SIM: Compilação Híbrida! como Java, programas Python são compilados, porém para uma linguagem intermediária, destinada a um interpretador  Isola Python de muitas das excentricidades das máquinas reais na qual ele roda  provê um nível de portabilidadeProf. Fabio Alexandre Spanhol, M.Sc. 19
  19. 19. De altíssimo nível e poderosa Elegante, com sintaxe simples e concisa Fácil de aprender, “cabe” no seu cérebro ! Multiparadigma Funcional, Procedural e Orientado a Objetos Possui suporte nativo a estruturas de dados complexasProf. Fabio Alexandre Spanhol, M.Sc. 20
  20. 20. Prof. Fabio Alexandre Spanhol, M.Sc. 21
  21. 21. Prof. Fabio Alexandre Spanhol, M.Sc. 22
  22. 22. Prof. Fabio Alexandre Spanhol, M.Sc. 23
  23. 23. Prof. Fabio Alexandre Spanhol, M.Sc. 24
  24. 24. Código é muito mais lido que escrito! Readability importa! (muito)  Python te ajuda a escrever código mais legívelProf. Fabio Alexandre Spanhol, M.Sc. 25
  25. 25. 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.Prof. Fabio Alexandre Spanhol, M.Sc. 26
  26. 26. Prof. Fabio Alexandre Spanhol, M.Sc. 27
  27. 27. 33 palavras reservadas Java tem 53 e C# 77  and except nonlocal False  as finally not None  assert for or True  break from pass  class global raise  continue if return  def import try  del in while  elif is with  else lambda yeldProf. Fabio Alexandre Spanhol, M.Sc. 28
  28. 28. Prazer em lhe conhecer! Cython  onde existir um compilador C ISO/IEC 9899:1990 Jython  máquina virtual Java PyPy  Python implementado em Python Python for .NET  [Brian Lloyd], IronPython (da M$) Python for Delphi LunaticPython  interoperando com Lua Ruby/Python  em Ruby importar módulos Python)Prof. Fabio Alexandre Spanhol, M.Sc. 29
  29. 29. Prof. Fabio Alexandre Spanhol, M.Sc. 30
  30. 30. Programas maiores codificados emarquivos (scripts) normalmente usando um IDE extensão py O script pode ser executado diretamenteda linha de comando do SO python oi.py Ou carregado para o interpretadorinterativo >>> import oi 31Prof. Fabio Alexandre Spanhol, M.Sc.
  31. 31. Inúmeros Geany Vim Aptana Komodo NetBeans PyCharm PyDev (Eclipse) Wing IDE Pyshield Spyder MS-Visual Studio Etc. 32Prof. Fabio Alexandre Spanhol, M.Sc.
  32. 32. Ninja IDE (Ninja Is Not Just Another IDE) Multiplataforma Editor de código poderoso Gerenciamento de Projetos Plugins  http://ninja-ide.org/Prof. Fabio Alexandre Spanhol, M.Sc. 33
  33. 33. Prof. Fabio Alexandre Spanhol, M.Sc. 34
  34. 34. Prof. Fabio Alexandre Spanhol, M.Sc. 35
  35. 35. Python Enhancement Proposal São documentos padronizados da comunidade Python  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/Prof. Fabio Alexandre Spanhol, M.Sc. 36
  36. 36. Python é case-sensitiveCada linha é delimitada por enterTipagem forte e dinâmica Não há declaração de variáveisAlguns operadores Atribuição: = Aritméticos: +, -, *, /, **,//, % Relacionais: <, >, >=,<=, ==, !=, <>, is, in Lógicos: and, or, not Bitwise: |, ^, &, >>, <<, ~Prof. Fabio Alexandre Spanhol, M.Sc. 37
  37. 37. 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 emuma expressão sem ter sido inicializada não existe “criação automática” de variáveisProf. Fabio Alexandre Spanhol, M.Sc. 38
  38. 38. Variáveis não são “caixas” com valores Variáveis são “rótulos” colados em objetos São criadas pela atribuição Operador =Prof. Fabio Alexandre Spanhol, M.Sc. 39
  39. 39. 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)Prof. Fabio Alexandre Spanhol, M.Sc. 40
  40. 40. 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!!!Prof. Fabio Alexandre Spanhol, M.Sc. 41
  41. 41. Prof. Fabio Alexandre Spanhol, M.Sc. 42
  42. 42. A partir do caractere #, o interpretadorignora o restante do código até o final dalinha Isso não vale dentro de strings Para várias linhas use asplas triplas(docstring) Documentar funções, classes, módulos, etc.Prof. Fabio Alexandre Spanhol, M.Sc. 43
  43. 43. Inteiros x = 10 y = 56859898958711346465165798798715654000000000000**2 z = y + x  3233048109594863662031421586618163610229539807267781773950479 944647716000000000000000000000010LPonto flutuante f = 85.99984Booleanos True e FalseStrings Delimitadas por aspas ou apóstrofo s = “python” s2 = ‘language’ s3 = “%s %s” % (s,s2)Prof. Fabio Alexandre Spanhol, M.Sc. 44
  44. 44. Usando typeProf. Fabio Alexandre Spanhol, M.Sc. 45
  45. 45. Usando typeProf. Fabio Alexandre Spanhol, M.Sc. 46
  46. 46. Tuplas Imutáveis (‘Fabio’,36, False, 89.2,186)Listas mutáveis [‘Fabio’,36, False, 89.2,186]Dicionários Chaves com valores associados refeicoes = {"café" : “cereal com leite e mel", "almoço" : "macarrão carbonara“,"jantar" : "sopa de champignon"} refeicoes["almoço"]Conjuntos Não permite elementos duplicados set([1,2,3,4,5,6,8,9,8,1,2,7,1,2,5]) Retorna  set([1, 2, 3, 4, 5, 6, 7, 8, 9])Prof. Fabio Alexandre Spanhol, M.Sc. 47
  47. 47. Entrada com inputSaída com printProf. Fabio Alexandre Spanhol, M.Sc. 48
  48. 48. ifif (expressao): bloco[elif (expressao): bloco][else: bloco] Prof. Fabio Alexandre Spanhol, M.Sc. 49
  49. 49. exemploProf. Fabio Alexandre Spanhol, M.Sc. 50
  50. 50. Forfor variavel in sequencia: bloco[else: bloco] Whilewhile (expressao): bloco[else: bloco] Prof. Fabio Alexandre Spanhol, M.Sc. 51
  51. 51. Exemplo1Exemplo2Prof. Fabio Alexandre Spanhol, M.Sc. 52
  52. 52. Modularizam o código Comando def inicia a definição de uma função Comando return marca o fim da execução da função e define o resultado a ser devolvido  Pode ser NoneProf. Fabio Alexandre Spanhol, M.Sc. 53
  53. 53. ExemploProf. Fabio Alexandre Spanhol, M.Sc. 54
  54. 54. Prof. Fabio Alexandre Spanhol, M.Sc. 55
  55. 55. Ei, não vamos complicar!Prof. Fabio Alexandre Spanhol, M.Sc. 56
  56. 56. Estourar a pilha de execução é “fácil” E aí, tentou fat(1000)?Prof. Fabio Alexandre Spanhol, M.Sc. 57
  57. 57. Mudando o tamanho da pilha de ativaçãoProf. Fabio Alexandre Spanhol, M.Sc. 58
  58. 58. Prof. Fabio Alexandre Spanhol, M.Sc. 59
  59. 59. Prof. Fabio Alexandre Spanhol, M.Sc. 60
  60. 60. Inverter a ordem das cartasbaralho.reverse()Tirar a carta do topobaralho.pop()Adicionar 4 coringasbaralho.extend([‘Coringa’]*4)Colocar em ordembaralho.sort() Pelo número de letras: baralho.sort(key=len)Prof. Fabio Alexandre Spanhol, M.Sc. 61
  61. 61. TCL-TK é parte integrante, via tkinter Diversos outros bindings de frameworks wxWidgets QT GTK etc.Prof. Fabio Alexandre Spanhol, M.Sc. 62
  62. 62. Prof. Fabio Alexandre Spanhol, M.Sc. 63
  63. 63. Também tem! Você pode fazer programação funcional sem Lost in Stupid Parenthesis (LISP)Prof. Fabio Alexandre Spanhol, M.Sc. 64
  64. 64. Prof. Fabio Alexandre Spanhol, M.Sc. 65
  65. 65. Prof. Fabio Alexandre Spanhol, M.Sc. 66
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×