SlideShare una empresa de Scribd logo
1 de 66
Descargar para leer sin conexión
é 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
                            Tcl

Prof. Fabio Alexandre Spanhol, M.Sc.                          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 Raymond


Prof. Fabio Alexandre Spanhol, M.Sc.                       3
Life is Better
                                       Without Braces.

                                                  Bruce Eckel




Prof. Fabio Alexandre Spanhol, M.Sc.                        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 we're
                                       looking for more people
                                       with skills in this
                                       language.

                                                       Peter Norvik
Prof. Fabio Alexandre Spanhol, M.Sc.                                5
Prof. Fabio Alexandre Spanhol, M.Sc.   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/ 7
Prof. Fabio Alexandre Spanhol, M.Sc.
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
Prof. Fabio Alexandre Spanhol, M.Sc.   9
NADA!

  Python foi desenvolvido como um
projeto open source, sem fins
lucrativos e gerenciado pela PSF
(Python Software Foundation)




Prof. Fabio Alexandre Spanhol, M.Sc.   10
Para obter o interpretador Python
acessar
http://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 2012




Prof. Fabio Alexandre Spanhol, M.Sc.        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
Governo Federal
 Petrobras
 Serpro
 Embratel
 Globo.com
 StarOne
 Conectiva
 CPqD
 Async
 Haxent
 UTFPR
 ...

Prof. Fabio Alexandre Spanhol, M.Sc.   13
Vários projetos da comunidade Software
Livre
  Blender
  OpenOffice
  Zope/Plone
  MoinMoin
  Mailman
  BitTorrent
  Chandler
  Gimp
  Plone
  Django
  OpenERP
  inVesalius
Prof. Fabio Alexandre Spanhol, M.Sc.      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
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, Vista, Seven
(ctypes, win32all)
 Apple iPhone
 Google Android




Prof. Fabio Alexandre Spanhol, M.Sc.     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 portabilidade




Prof. Fabio Alexandre Spanhol, M.Sc.                 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
                                       complexas
Prof. Fabio Alexandre Spanhol, M.Sc.                              20
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
     legível




Prof. Fabio Alexandre Spanhol, M.Sc.                 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
Prof. Fabio Alexandre Spanhol, M.Sc.   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               yeld




Prof. Fabio Alexandre Spanhol, M.Sc.                      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
Prof. Fabio Alexandre Spanhol, M.Sc.   30
Programas maiores codificados em
arquivos (scripts)
  normalmente usando um IDE
  extensão py

 O script pode ser executado diretamente
da linha de comando do SO
  python oi.py


  Ou carregado para o interpretador
interativo
  >>> import oi                            31
Prof. Fabio Alexandre Spanhol, M.Sc.
Inúmeros
  Geany
  Vim
  Aptana
  Komodo
  NetBeans
  PyCharm
  PyDev (Eclipse)
  Wing IDE
  Pyshield
  Spyder
  MS-Visual Studio
  Etc.                                 32
Prof. Fabio Alexandre Spanhol, M.Sc.
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
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,
    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
Python é case-sensitive

Cada linha é delimitada por enter

Tipagem forte e dinâmica
 Não há declaração de variáveis


Alguns operadores
 Atribuição: =
 Aritméticos: +, -, *, /, **,//, %
 Relacionais: <, >, >=,<=, ==, !=, <>, is, in
 Lógicos: and, or, not
 Bitwise: |, ^, &, >>, <<, ~

Prof. Fabio Alexandre Spanhol, M.Sc.            37
Em Python, variáveis são referências a
objetos

   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
uma expressão sem ter sido inicializada
  não existe “criação automática” de variáveis

Prof. Fabio Alexandre Spanhol, M.Sc.                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
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
Um bloco inicia com                   :

  A estrutura dos blocos é definida pela
indentaçã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
Prof. Fabio Alexandre Spanhol, M.Sc.   42
A partir do caractere #, o interpretador
ignora 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)
  Documentar funções, classes, módulos, etc.




Prof. Fabio Alexandre Spanhol, M.Sc.           43
Inteiros
 x   = 10
 y   = 56859898958711346465165798798715654000000000000**2
 z   = y + x
    3233048109594863662031421586618163610229539807267781773950479
     944647716000000000000000000000010L
Ponto flutuante
 f = 85.99984
Booleanos
 True e False
Strings
 Delimitadas por aspas ou apóstrofo
 s = “python”
 s2 = ‘language’
 s3 = “%s %s” % (s,s2)



Prof. Fabio Alexandre Spanhol, M.Sc.                             44
Usando type




Prof. Fabio Alexandre Spanhol, M.Sc.   45
Usando type




Prof. 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 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
Entrada com input




Saída com print




Prof. Fabio Alexandre Spanhol, M.Sc.   48
if
if (expressao):
   bloco
[elif (expressao):
   bloco]
[else:
   bloco]




 Prof. Fabio Alexandre Spanhol, M.Sc.   49
exemplo




Prof. Fabio Alexandre Spanhol, M.Sc.   50
For
for variavel in sequencia:
   bloco
[else:
   bloco]

 While

while (expressao):
   bloco
[else:
   bloco]
 Prof. Fabio Alexandre Spanhol, M.Sc.   51
Exemplo1




Exemplo2




Prof. 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 define o resultado a ser devolvido
   Pode ser None




Prof. Fabio Alexandre Spanhol, M.Sc.             53
Exemplo




Prof. 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ção




Prof. Fabio Alexandre Spanhol, M.Sc.       58
Prof. Fabio Alexandre Spanhol, M.Sc.   59
Prof. Fabio Alexandre Spanhol, M.Sc.   60
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)
Prof. Fabio Alexandre Spanhol, M.Sc.   61
TCL-TK é parte integrante, via tkinter
  Diversos outros bindings de frameworks
   wxWidgets
   QT
   GTK
   etc.




Prof. Fabio Alexandre Spanhol, M.Sc.       62
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.Sc.          64
Prof. Fabio Alexandre Spanhol, M.Sc.   65
Prof. Fabio Alexandre Spanhol, M.Sc.   66

Más contenido relacionado

La actualidad más candente

Tutorial Python ed. #2
Tutorial Python ed. #2Tutorial Python ed. #2
Tutorial Python ed. #2Fabio Spanhol
 
Python - Introdução Básica
Python - Introdução BásicaPython - Introdução Básica
Python - Introdução BásicaChristian Perone
 
Paradigmas de Linguagens de Programação
Paradigmas de Linguagens de ProgramaçãoParadigmas de Linguagens de Programação
Paradigmas de Linguagens de ProgramaçãoFabio Spanhol
 
Apresentando a Linguagem de Programação Python
Apresentando a Linguagem de Programação PythonApresentando a Linguagem de Programação Python
Apresentando a Linguagem de Programação PythonPriscila Mayumi
 
Introdução a programação em python d2
Introdução a programação em python d2Introdução a programação em python d2
Introdução a programação em python d2Moises de Paula
 
Python Mini Ccurso Consegi2011
Python Mini Ccurso Consegi2011Python Mini Ccurso Consegi2011
Python Mini Ccurso Consegi2011Luiz Aldabalde
 
Introdução à Programação em Python
Introdução à Programação em PythonIntrodução à Programação em Python
Introdução à Programação em PythonRodrigo Hübner
 
Curso básico de Algoritmos com Python
Curso básico de Algoritmos com PythonCurso básico de Algoritmos com Python
Curso básico de Algoritmos com PythonGiancarlo Silva
 
Apresentação python fábio jr alves
Apresentação python   fábio jr alvesApresentação python   fábio jr alves
Apresentação python fábio jr alvesGrupython Ufla
 
Programando para web com python - Introdução a Python
Programando para web com python - Introdução a PythonProgramando para web com python - Introdução a Python
Programando para web com python - Introdução a PythonAlvaro Oliveira
 
Python: programação divertida novamente
Python: programação divertida novamentePython: programação divertida novamente
Python: programação divertida novamenteRodrigo Amaral
 
Introdução a estruturas de dados em python
Introdução a estruturas de dados em pythonIntrodução a estruturas de dados em python
Introdução a estruturas de dados em pythonAlvaro Oliveira
 
2016/01/27 - Aprendendo a programar com Python
2016/01/27 - Aprendendo a programar com Python2016/01/27 - Aprendendo a programar com Python
2016/01/27 - Aprendendo a programar com PythonJardel Weyrich
 
Computação Científica com SciPy - Brevíssimo Tutorial
Computação Científica com SciPy - Brevíssimo TutorialComputação Científica com SciPy - Brevíssimo Tutorial
Computação Científica com SciPy - Brevíssimo TutorialFabio Spanhol
 
Trabalho de Paradigmas Da Linguagem De Programação - Python
Trabalho de Paradigmas Da Linguagem De Programação - PythonTrabalho de Paradigmas Da Linguagem De Programação - Python
Trabalho de Paradigmas Da Linguagem De Programação - PythonJanderson Campêlo
 
Introdução à linguagem Python
Introdução à linguagem PythonIntrodução à linguagem Python
Introdução à linguagem PythonAlex Tercete
 
Python - Guia de bolso
Python - Guia de bolsoPython - Guia de bolso
Python - Guia de bolsoJean Lopes
 

La actualidad más candente (20)

Tutorial Python - 1
Tutorial Python - 1Tutorial Python - 1
Tutorial Python - 1
 
Tutorial Python ed. #2
Tutorial Python ed. #2Tutorial Python ed. #2
Tutorial Python ed. #2
 
Python - Introdução Básica
Python - Introdução BásicaPython - Introdução Básica
Python - Introdução Básica
 
Paradigmas de Linguagens de Programação
Paradigmas de Linguagens de ProgramaçãoParadigmas de Linguagens de Programação
Paradigmas de Linguagens de Programação
 
Apresentando a Linguagem de Programação Python
Apresentando a Linguagem de Programação PythonApresentando a Linguagem de Programação Python
Apresentando a Linguagem de Programação Python
 
Introdução a programação em python d2
Introdução a programação em python d2Introdução a programação em python d2
Introdução a programação em python d2
 
Python Mini Ccurso Consegi2011
Python Mini Ccurso Consegi2011Python Mini Ccurso Consegi2011
Python Mini Ccurso Consegi2011
 
Introdução à Programação em Python
Introdução à Programação em PythonIntrodução à Programação em Python
Introdução à Programação em Python
 
Curso básico de Algoritmos com Python
Curso básico de Algoritmos com PythonCurso básico de Algoritmos com Python
Curso básico de Algoritmos com Python
 
Apresentação python fábio jr alves
Apresentação python   fábio jr alvesApresentação python   fábio jr alves
Apresentação python fábio jr alves
 
Programando para web com python - Introdução a Python
Programando para web com python - Introdução a PythonProgramando para web com python - Introdução a Python
Programando para web com python - Introdução a Python
 
Python: programação divertida novamente
Python: programação divertida novamentePython: programação divertida novamente
Python: programação divertida novamente
 
Python - Introdução
Python - IntroduçãoPython - Introdução
Python - Introdução
 
Introdução a estruturas de dados em python
Introdução a estruturas de dados em pythonIntrodução a estruturas de dados em python
Introdução a estruturas de dados em python
 
2016/01/27 - Aprendendo a programar com Python
2016/01/27 - Aprendendo a programar com Python2016/01/27 - Aprendendo a programar com Python
2016/01/27 - Aprendendo a programar com Python
 
Computação Científica com SciPy - Brevíssimo Tutorial
Computação Científica com SciPy - Brevíssimo TutorialComputação Científica com SciPy - Brevíssimo Tutorial
Computação Científica com SciPy - Brevíssimo Tutorial
 
Trabalho de Paradigmas Da Linguagem De Programação - Python
Trabalho de Paradigmas Da Linguagem De Programação - PythonTrabalho de Paradigmas Da Linguagem De Programação - Python
Trabalho de Paradigmas Da Linguagem De Programação - Python
 
Programando com Python
Programando com PythonProgramando com Python
Programando com Python
 
Introdução à linguagem Python
Introdução à linguagem PythonIntrodução à linguagem Python
Introdução à linguagem Python
 
Python - Guia de bolso
Python - Guia de bolsoPython - Guia de bolso
Python - Guia de bolso
 

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

"Mostrando a Cobra" - ou Breve Introdução à Linguagem Python
"Mostrando a Cobra" - ou Breve Introdução à Linguagem Python"Mostrando a Cobra" - ou Breve Introdução à Linguagem Python
"Mostrando a Cobra" - ou Breve Introdução à Linguagem PythonFabio Spanhol
 
"Mostrando a Cobra" - ou Breve Introdução a Linguagem Python. ed2
"Mostrando a Cobra" - ou Breve Introdução a Linguagem Python. ed2"Mostrando a Cobra" - ou Breve Introdução a Linguagem Python. ed2
"Mostrando a Cobra" - ou Breve Introdução a Linguagem Python. ed2Fabio Spanhol
 
The zen of python 2010
The zen of python 2010The zen of python 2010
The zen of python 2010Luiz Aldabalde
 
Por que python? fisl 14 - 2013
Por que python?   fisl 14 - 2013Por que python?   fisl 14 - 2013
Por que python? fisl 14 - 2013Marco Mendes
 
Sistemas de Processamento de Linguagem Natural na Prática
Sistemas de Processamento de Linguagem Natural na PráticaSistemas de Processamento de Linguagem Natural na Prática
Sistemas de Processamento de Linguagem Natural na PráticaWilliam Colen
 
Elementos Fundamentais de Linguagens de Programação e a Linguagem Python
Elementos Fundamentais de Linguagens de Programação e a Linguagem PythonElementos Fundamentais de Linguagens de Programação e a Linguagem Python
Elementos Fundamentais de Linguagens de Programação e a Linguagem PythonCaliane Z. Pecenin
 
Use a Cabeça! Python_Português.pdf
Use a Cabeça! Python_Português.pdfUse a Cabeça! Python_Português.pdf
Use a Cabeça! Python_Português.pdfMaxCoalastudio
 
Introdução à Linguagem de Programação Python.pdf
Introdução à Linguagem de Programação Python.pdfIntrodução à Linguagem de Programação Python.pdf
Introdução à Linguagem de Programação Python.pdfEduardoChicoJooJoo
 
Palestra 01
Palestra 01Palestra 01
Palestra 01mbcleao
 
Palestra 02
Palestra 02Palestra 02
Palestra 02mbcleao
 
[Descola]programa gamification poa
[Descola]programa gamification poa[Descola]programa gamification poa
[Descola]programa gamification poaDescola
 
Seminário - Guido van Rossum: Breve história da linguagem Python
Seminário - Guido van Rossum: Breve história da linguagem PythonSeminário - Guido van Rossum: Breve história da linguagem Python
Seminário - Guido van Rossum: Breve história da linguagem PythonGiancarlo Silva
 
Atividades pré-instaladas no XO
Atividades pré-instaladas no XOAtividades pré-instaladas no XO
Atividades pré-instaladas no XOrobertafantin
 
Processamento Automático da Língua Portuguesa - Campus Party Br 6
Processamento Automático da Língua Portuguesa - Campus Party Br 6Processamento Automático da Língua Portuguesa - Campus Party Br 6
Processamento Automático da Língua Portuguesa - Campus Party Br 6William Colen
 
Linguagens de programação
Linguagens de programaçãoLinguagens de programação
Linguagens de programaçãoessa
 
Linguagensdeprogramao 100611235520-phpapp01
Linguagensdeprogramao 100611235520-phpapp01Linguagensdeprogramao 100611235520-phpapp01
Linguagensdeprogramao 100611235520-phpapp01Romário santos
 
Minicurso de python - CACC UFPA 2010
Minicurso de python - CACC UFPA 2010Minicurso de python - CACC UFPA 2010
Minicurso de python - CACC UFPA 2010Diego Damasceno
 

Similar a Mostrando a Cobra - Breve Introdução à Linguagem Python (20)

"Mostrando a Cobra" - ou Breve Introdução à Linguagem Python
"Mostrando a Cobra" - ou Breve Introdução à Linguagem Python"Mostrando a Cobra" - ou Breve Introdução à Linguagem Python
"Mostrando a Cobra" - ou Breve Introdução à Linguagem Python
 
"Mostrando a Cobra" - ou Breve Introdução a Linguagem Python. ed2
"Mostrando a Cobra" - ou Breve Introdução a Linguagem Python. ed2"Mostrando a Cobra" - ou Breve Introdução a Linguagem Python. ed2
"Mostrando a Cobra" - ou Breve Introdução a Linguagem Python. ed2
 
The zen of python 2010
The zen of python 2010The zen of python 2010
The zen of python 2010
 
Por que python? fisl 14 - 2013
Por que python?   fisl 14 - 2013Por que python?   fisl 14 - 2013
Por que python? fisl 14 - 2013
 
Sistemas de Processamento de Linguagem Natural na Prática
Sistemas de Processamento de Linguagem Natural na PráticaSistemas de Processamento de Linguagem Natural na Prática
Sistemas de Processamento de Linguagem Natural na Prática
 
Elementos Fundamentais de Linguagens de Programação e a Linguagem Python
Elementos Fundamentais de Linguagens de Programação e a Linguagem PythonElementos Fundamentais de Linguagens de Programação e a Linguagem Python
Elementos Fundamentais de Linguagens de Programação e a Linguagem Python
 
Use a Cabeça! Python_Português.pdf
Use a Cabeça! Python_Português.pdfUse a Cabeça! Python_Português.pdf
Use a Cabeça! Python_Português.pdf
 
Introdução à Linguagem de Programação Python.pdf
Introdução à Linguagem de Programação Python.pdfIntrodução à Linguagem de Programação Python.pdf
Introdução à Linguagem de Programação Python.pdf
 
Palestra 01
Palestra 01Palestra 01
Palestra 01
 
Palestra 02
Palestra 02Palestra 02
Palestra 02
 
Python brasil[6]
Python brasil[6]Python brasil[6]
Python brasil[6]
 
[Descola]programa gamification poa
[Descola]programa gamification poa[Descola]programa gamification poa
[Descola]programa gamification poa
 
Seminário - Guido van Rossum: Breve história da linguagem Python
Seminário - Guido van Rossum: Breve história da linguagem PythonSeminário - Guido van Rossum: Breve história da linguagem Python
Seminário - Guido van Rossum: Breve história da linguagem Python
 
Slide
SlideSlide
Slide
 
Programação RAD com Python
Programação RAD com PythonProgramação RAD com Python
Programação RAD com Python
 
Atividades pré-instaladas no XO
Atividades pré-instaladas no XOAtividades pré-instaladas no XO
Atividades pré-instaladas no XO
 
Processamento Automático da Língua Portuguesa - Campus Party Br 6
Processamento Automático da Língua Portuguesa - Campus Party Br 6Processamento Automático da Língua Portuguesa - Campus Party Br 6
Processamento Automático da Língua Portuguesa - Campus Party Br 6
 
Linguagens de programação
Linguagens de programaçãoLinguagens de programação
Linguagens de programação
 
Linguagensdeprogramao 100611235520-phpapp01
Linguagensdeprogramao 100611235520-phpapp01Linguagensdeprogramao 100611235520-phpapp01
Linguagensdeprogramao 100611235520-phpapp01
 
Minicurso de python - CACC UFPA 2010
Minicurso de python - CACC UFPA 2010Minicurso de python - CACC UFPA 2010
Minicurso de python - CACC UFPA 2010
 

Más de Fabio Spanhol

Classificação Automatizada de Câncer de Mama - Imagens Histopatológicas
Classificação Automatizada de Câncer de Mama - Imagens HistopatológicasClassificação Automatizada de Câncer de Mama - Imagens Histopatológicas
Classificação Automatizada de Câncer de Mama - Imagens HistopatológicasFabio Spanhol
 
Quem Tem Medo do Terminal?
Quem Tem Medo do Terminal?Quem Tem Medo do Terminal?
Quem Tem Medo do Terminal?Fabio Spanhol
 
ENEM - Exame Nacional do Ensino Médio
ENEM - Exame Nacional do Ensino MédioENEM - Exame Nacional do Ensino Médio
ENEM - Exame Nacional do Ensino MédioFabio Spanhol
 
Elaboração e Gerenciamento de Projetos
Elaboração e Gerenciamento de Projetos Elaboração e Gerenciamento de Projetos
Elaboração e Gerenciamento de Projetos Fabio Spanhol
 
XML-RPC: Tópicos Introdutórios
XML-RPC: Tópicos IntrodutóriosXML-RPC: Tópicos Introdutórios
XML-RPC: Tópicos IntrodutóriosFabio Spanhol
 
Gestão de Projetos com MS-Project 2010
Gestão de Projetos com MS-Project 2010Gestão de Projetos com MS-Project 2010
Gestão de Projetos com MS-Project 2010Fabio Spanhol
 
E essa tal Virtualização?
E essa tal Virtualização?E essa tal Virtualização?
E essa tal Virtualização?Fabio Spanhol
 
Automação de Aplicativos: Scripting com Python
Automação de Aplicativos: Scripting com PythonAutomação de Aplicativos: Scripting com Python
Automação de Aplicativos: Scripting com PythonFabio Spanhol
 

Más de Fabio Spanhol (8)

Classificação Automatizada de Câncer de Mama - Imagens Histopatológicas
Classificação Automatizada de Câncer de Mama - Imagens HistopatológicasClassificação Automatizada de Câncer de Mama - Imagens Histopatológicas
Classificação Automatizada de Câncer de Mama - Imagens Histopatológicas
 
Quem Tem Medo do Terminal?
Quem Tem Medo do Terminal?Quem Tem Medo do Terminal?
Quem Tem Medo do Terminal?
 
ENEM - Exame Nacional do Ensino Médio
ENEM - Exame Nacional do Ensino MédioENEM - Exame Nacional do Ensino Médio
ENEM - Exame Nacional do Ensino Médio
 
Elaboração e Gerenciamento de Projetos
Elaboração e Gerenciamento de Projetos Elaboração e Gerenciamento de Projetos
Elaboração e Gerenciamento de Projetos
 
XML-RPC: Tópicos Introdutórios
XML-RPC: Tópicos IntrodutóriosXML-RPC: Tópicos Introdutórios
XML-RPC: Tópicos Introdutórios
 
Gestão de Projetos com MS-Project 2010
Gestão de Projetos com MS-Project 2010Gestão de Projetos com MS-Project 2010
Gestão de Projetos com MS-Project 2010
 
E essa tal Virtualização?
E essa tal Virtualização?E essa tal Virtualização?
E essa tal Virtualização?
 
Automação de Aplicativos: Scripting com Python
Automação de Aplicativos: Scripting com PythonAutomação de Aplicativos: Scripting com Python
Automação de Aplicativos: Scripting com Python
 

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

  • 1.
  • 2. é 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 Tcl Prof. Fabio Alexandre Spanhol, M.Sc. 2
  • 3. 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 Raymond Prof. Fabio Alexandre Spanhol, M.Sc. 3
  • 4. Life is Better Without Braces. Bruce Eckel Prof. Fabio Alexandre Spanhol, M.Sc. 4
  • 5. 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 we're looking for more people with skills in this language. Peter Norvik Prof. Fabio Alexandre Spanhol, M.Sc. 5
  • 6. Prof. Fabio Alexandre Spanhol, M.Sc. 6
  • 7. 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/ 7 Prof. Fabio Alexandre Spanhol, M.Sc.
  • 8. 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
  • 9. Prof. Fabio Alexandre Spanhol, M.Sc. 9
  • 10. NADA! Python foi desenvolvido como um projeto open source, sem fins lucrativos e gerenciado pela PSF (Python Software Foundation) Prof. Fabio Alexandre Spanhol, M.Sc. 10
  • 11. Para obter o interpretador Python acessar http://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 2012 Prof. Fabio Alexandre Spanhol, M.Sc. 11
  • 12. 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
  • 13. Governo Federal Petrobras Serpro Embratel Globo.com StarOne Conectiva CPqD Async Haxent UTFPR ... Prof. Fabio Alexandre Spanhol, M.Sc. 13
  • 14. Vários projetos da comunidade Software Livre Blender OpenOffice Zope/Plone MoinMoin Mailman BitTorrent Chandler Gimp Plone Django OpenERP inVesalius Prof. Fabio Alexandre Spanhol, M.Sc. 14
  • 15. 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
  • 16. Prof. Fabio Alexandre Spanhol, M.Sc. 16
  • 17. Prof. Fabio Alexandre Spanhol, M.Sc. 17
  • 18. 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 Android Prof. Fabio Alexandre Spanhol, M.Sc. 18
  • 19. 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 portabilidade Prof. Fabio Alexandre Spanhol, M.Sc. 19
  • 20. 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 complexas Prof. Fabio Alexandre Spanhol, M.Sc. 20
  • 21. Prof. Fabio Alexandre Spanhol, M.Sc. 21
  • 22. Prof. Fabio Alexandre Spanhol, M.Sc. 22
  • 23. Prof. Fabio Alexandre Spanhol, M.Sc. 23
  • 24. Prof. Fabio Alexandre Spanhol, M.Sc. 24
  • 25. Código é muito mais lido que escrito! Readability importa! (muito)  Python te ajuda a escrever código mais legível Prof. Fabio Alexandre Spanhol, M.Sc. 25
  • 26. 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
  • 27. Prof. Fabio Alexandre Spanhol, M.Sc. 27
  • 28. 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 yeld Prof. Fabio Alexandre Spanhol, M.Sc. 28
  • 29. 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
  • 30. Prof. Fabio Alexandre Spanhol, M.Sc. 30
  • 31. Programas maiores codificados em arquivos (scripts) normalmente usando um IDE extensão py O script pode ser executado diretamente da linha de comando do SO python oi.py Ou carregado para o interpretador interativo >>> import oi 31 Prof. Fabio Alexandre Spanhol, M.Sc.
  • 32. Inúmeros Geany Vim Aptana Komodo NetBeans PyCharm PyDev (Eclipse) Wing IDE Pyshield Spyder MS-Visual Studio Etc. 32 Prof. Fabio Alexandre Spanhol, M.Sc.
  • 33. 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
  • 34. Prof. Fabio Alexandre Spanhol, M.Sc. 34
  • 35. Prof. Fabio Alexandre Spanhol, M.Sc. 35
  • 36. 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
  • 37. Python é case-sensitive Cada linha é delimitada por enter Tipagem forte e dinâmica Não há declaração de variáveis Alguns operadores Atribuição: = Aritméticos: +, -, *, /, **,//, % Relacionais: <, >, >=,<=, ==, !=, <>, is, in Lógicos: and, or, not Bitwise: |, ^, &, >>, <<, ~ Prof. Fabio Alexandre Spanhol, M.Sc. 37
  • 38. Em Python, variáveis são referências a objetos 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 uma expressão sem ter sido inicializada não existe “criação automática” de variáveis Prof. Fabio Alexandre Spanhol, M.Sc. 38
  • 39. 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
  • 40. 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
  • 41. Um bloco inicia com : A estrutura dos blocos é definida pela indentaçã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
  • 42. Prof. Fabio Alexandre Spanhol, M.Sc. 42
  • 43. A partir do caractere #, o interpretador ignora 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) Documentar funções, classes, módulos, etc. Prof. Fabio Alexandre Spanhol, M.Sc. 43
  • 44. Inteiros x = 10 y = 56859898958711346465165798798715654000000000000**2 z = y + x  3233048109594863662031421586618163610229539807267781773950479 944647716000000000000000000000010L Ponto flutuante f = 85.99984 Booleanos True e False Strings Delimitadas por aspas ou apóstrofo s = “python” s2 = ‘language’ s3 = “%s %s” % (s,s2) Prof. Fabio Alexandre Spanhol, M.Sc. 44
  • 45. Usando type Prof. Fabio Alexandre Spanhol, M.Sc. 45
  • 46. Usando type Prof. Fabio Alexandre Spanhol, M.Sc. 46
  • 47. 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
  • 48. Entrada com input Saída com print Prof. Fabio Alexandre Spanhol, M.Sc. 48
  • 49. if if (expressao): bloco [elif (expressao): bloco] [else: bloco] Prof. Fabio Alexandre Spanhol, M.Sc. 49
  • 50. exemplo Prof. Fabio Alexandre Spanhol, M.Sc. 50
  • 51. For for variavel in sequencia: bloco [else: bloco] While while (expressao): bloco [else: bloco] Prof. Fabio Alexandre Spanhol, M.Sc. 51
  • 53. 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 None Prof. Fabio Alexandre Spanhol, M.Sc. 53
  • 54. Exemplo Prof. Fabio Alexandre Spanhol, M.Sc. 54
  • 55. Prof. Fabio Alexandre Spanhol, M.Sc. 55
  • 56. Ei, não vamos complicar! Prof. Fabio Alexandre Spanhol, M.Sc. 56
  • 57. Estourar a pilha de execução é “fácil” E aí, tentou fat(1000)? Prof. Fabio Alexandre Spanhol, M.Sc. 57
  • 58. Mudando o tamanho da pilha de ativação Prof. Fabio Alexandre Spanhol, M.Sc. 58
  • 59. Prof. Fabio Alexandre Spanhol, M.Sc. 59
  • 60. Prof. Fabio Alexandre Spanhol, M.Sc. 60
  • 61. 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) Prof. Fabio Alexandre Spanhol, M.Sc. 61
  • 62. TCL-TK é parte integrante, via tkinter Diversos outros bindings de frameworks wxWidgets QT GTK etc. Prof. Fabio Alexandre Spanhol, M.Sc. 62
  • 63. Prof. Fabio Alexandre Spanhol, M.Sc. 63
  • 64. Também tem! Você pode fazer programação funcional sem Lost in Stupid Parenthesis (LISP) Prof. Fabio Alexandre Spanhol, M.Sc. 64
  • 65. Prof. Fabio Alexandre Spanhol, M.Sc. 65
  • 66. Prof. Fabio Alexandre Spanhol, M.Sc. 66