SlideShare uma empresa Scribd logo
1 de 150
Baixar para ler offline
Hello, I am Python!
           Marcel Caraciolo
  Mini-Curso De Introdução a Python




                      II Workshop de Software Livre - CIN/UFPE - Recife - PE

                  1
                                                                               1
Quem é o instrutor ?
• Marcel Pinheiro Caraciolo - @marcelcaraciolo
   •   Sergipano, porém Recifense.

   •   Diretor de Pesquisa e Desenvolvimento da Orygens

   •   Mestrando em Ciência da Computação no CIN/UFPE na área de mineração de dados

   •   Membro e Moderador da Celúla de Usuários Python de Pernambuco (PUG-PE)

   •   Minhas áreas de interesse: Computação móvel e Computação inteligente

   •   Meus blogs: http://www.mobideia.com (sobre Mobilidade desde 2006)

                      http://aimotion.blogspot.com (sobre I.A. desde 2009)



                Jovem Aprendiz ainda nas artes pythonicas.... (desde 2007)

                                                   II Workshop de Software Livre - CIN/UFPE - Recife - PE
                                            2
                                                                                                            2
!"#$




O que é Python ?

     Por que Python?




                II Workshop de Software Livre - CIN/UFPE - Recife - PE
            3
                                                                                3
!"#$




 Por que Python
É fácil




               II Workshop de Software Livre - CIN/UFPE - Recife - PE
           4
                                                                               4
!"#$




Por que é fácil
• Semelhança com pseudo-código.




                             II Workshop de Software Livre - CIN/UFPE - Recife - PE
                         5
                                                                                             5
Hello World Classíco
... ‘hello world’ - Python vs { Java, C, PHP e Pascal }




                                      II Workshop de Software Livre - CIN/UFPE - Recife - PE


                                                                                               6
Hello World Classíco
.... Em Python ....




                      print “Hello World”




                                  II Workshop de Software Livre - CIN/UFPE - Recife - PE


                                                                                           7
Por que Python
É fácil

          É poderoso




                  II Workshop de Software Livre - CIN/UFPE - Recife - PE
              8
                                                                           8
Canivete suíço
Tipagem dinâmica

Biblioteca padrão completa

Multi-paradigma

Multi-plataforma

Facilmente extensível

Free Software (GPL)


                             II Workshop de Software Livre - CIN/UFPE - Recife - PE


                                                                                      9
Por que é poderoso
•   Python para Web
    •   Web é presente -> Futuro!

    •   Django (http://www.django.org)

    •   Zope (http://www.zope.org)

    •   Plone (http://www.plone.org)

    •   Turbogears (http://www.turbogears.org)

    •   Web2Py (http://www.web2py.com)




                                            II Workshop de Software Livre - CIN/UFPE - Recife - PE

                                       10
                                                                                                     10
Web




http://www.nationalgeographic.com/
                                          II Workshop de Software Livre - CIN/UFPE - Recife - PE
                                     11
                                                                                                   11
Web




http://globo.com
                        II Workshop de Software Livre - CIN/UFPE - Recife - PE
                   12
                                                                                 12
Por que é poderoso
•   Python para gestão empresarial
    •   PyGTK (http://www.pygtk.org)

    •   PyQT (http://qt.nokia.com)

    •   MySQL, PostgreSQL, Oracle, Sqlite




                                            II Workshop de Software Livre - CIN/UFPE - Recife - PE

                                     13
                                                                                                     13
Aplicativos Desktop




http://www.stoq.com.br/   http://taskcoach.org/

                           II Workshop de Software Livre - CIN/UFPE - Recife - PE



                                                                                    14
Aplicativos Desktop




      Python + Qt + Qml
                  II Workshop de Software Livre - CIN/UFPE - Recife - PE



                                                                           15
Python é multi-plataforma
•   Python em dispositivos móveis
    •   Python for Symbian (PyS60), PySide (Maemo), ASE (Android)




                                       II Workshop de Software Livre - CIN/UFPE - Recife - PE



                                                                                                16
Android (ASE)




http://code.google.com/p/android-scripting/
                               II Workshop de Software Livre - CIN/UFPE - Recife - PE

                          17
                                                                                        17
Por que é poderoso




                                                     NetworkX
        http://pypi.python.org/pypi




                            II Workshop de Software Livre - CIN/UFPE - Recife - PE



                                                                                     18
Python é multi-plataforma

•   PyMT
    •   Python Multi Touch

    •   Especialmente criado para
        ambientes multi-touch




    http://pymt.eu/

                                    II Workshop de Software Livre - CIN/UFPE - Recife - PE



                                                                                             19
PyGame e Jogos




   http://www.pygame.org/news.html
                     II Workshop de Software Livre - CIN/UFPE - Recife - PE



                                                                              20
Aplicativos Desktop




      http://www.blender.org/
                     II Workshop de Software Livre - CIN/UFPE - Recife - PE



                                                                              21
Quem usa Python?




              II Workshop de Software Livre - CIN/UFPE - Recife - PE

         22
                                                                       22
... e aqui no Brasil também!




               II Workshop de Software Livre - CIN/UFPE - Recife - PE



                                                                        23
Python entre as 10 + !




     http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
                                              II Workshop de Software Livre - CIN/UFPE - Recife - PE


                                                                                                       24
O que é python ?

É fácil

          É poderoso




                 II Workshop de Software Livre - CIN/UFPE - Recife - PE



                                                                          25
O que é python ?

É fácil

          É poderoso


                           É divertido

                 II Workshop de Software Livre - CIN/UFPE - Recife - PE



                                                                          25
Fácil e poderoso!

lista = ['laranja', 'banana', 'uva']
lista.sort()
 
for item in lista:
    print item.capitalize()




                          II Workshop de Software Livre - CIN/UFPE - Recife - PE


                                                                                   26
Hun, sei o que é Python!


    ...E agora como eu começo ?




                    II Workshop de Software Livre - CIN/UFPE - Recife - PE


                                                                             27
Instaladores
•   Interpretador Python disponível para diversas
    plataformas.
    •   Windows, Unix, Linux, etc.

    •   Para usuários Windows, é necessário o download do SDK!

        •   http://www.python.org/download/




                                          II Workshop de Software Livre - CIN/UFPE - Recife - PE
                                     28
                                                                                                   28
Instaladores
•   Atualmente Python está na versão 2.7.1 / 3.2
    •   No Python 3.0 houve mudanças críticas! 2.7.x suaviliza a transição para
        os desenvolvedores (Muitos frameworks ainda escritos para Python 2.x)




                                            II Workshop de Software Livre - CIN/UFPE - Recife - PE
                                     29
                                                                                                     29
Instaladores (Windows)




               II Workshop de Software Livre - CIN/UFPE - Recife - PE
          30
                                                                        30
Instaladores (Windows)
•   Não esqueça de adicionar o caminho da instalação
    no PATH do sistema!
    •   ;C:Python2x
                                                                               Windows 7
    •   >>> 2 + 3                                                              Approved!

    •   >>> 5




                              II Workshop de Software Livre - CIN/UFPE - Recife - PE
                         31
                                                                                           31
Instaladores
•   E enquanto no Linux e Unix ?
    •   Estas distribuições já disponibilizam para você de forma nativa!




    •   Prompt do python “>>>”:

        •   Para sair:

            •   No Unix, digite CONTROL-D

            •   No Windows, digite CONTROL-Z + ENTER


                                              II Workshop de Software Livre - CIN/UFPE - Recife - PE
                                       32
                                                                                                       32
Vamos executar!
...E agora como eu crio meu
    programa em python ?




                       II Workshop de Software Livre - CIN/UFPE - Recife - PE
                  33
                                                                                33
Rodando Programas no Unix
•     Os arquivos python tem finalização .py!




     %python filename.py

•     Você pode usar qualquer editor de texto para codificar o seu código!

     •   No Windows : Clássico Notepad ou o IDLE...

     •   No Mac OS/Linux: VI, TextEdit, GEdit, TextMate ...

       Para tornar o arquivo *.py executável:
                     #!/usr/bin/python
    Para aceitar textos com acentos e caracteres
                       especiais:
                  # -*- coding: utf-8 -*-
                                                    II Workshop de Software Livre - CIN/UFPE - Recife - PE
                                               34
                                                                                                             34
Ambiente IDLE
• Ambiente Shell de
  desenvolvimento básico

• Editor de texto com
  highlighting e identação
  automática para criação
  de arquivos python

• Comandos para alterar
  propriedades e execução
  de programas

                                  II Workshop de Software Livre - CIN/UFPE - Recife - PE
                             35
                                                                                           35
Desenvolvimento
      ... E ambientes de
desenvolvimento para Python ?




                       II Workshop de Software Livre - CIN/UFPE - Recife - PE
                  36
                                                                                36
Eclipse
• Aptana PyDev
• Plugin para
  desenvolvimento de
  aplicações Python para o
  Eclipse

• Suporte para Debug,
  UnitTests.

• http://pydev.org/
                                  II Workshop de Software Livre - CIN/UFPE - Recife - PE
                             37
                                                                                           37
Netbeans
• Netbeans >= 6.5
• Plugin para
    desenvolvimento de
    aplicações Python para o
    Netbeans

• Suporte para Debug,
    UnitTests, etc.
•   http://wiki.netbeans.org/PythonInstall




                                                  II Workshop de Software Livre - CIN/UFPE - Recife - PE
                                             38
                                                                                                           38
ActivePython
• ActiveState Python
• Distribuição Python
    completa, instale e execute!

• Diversos plug-ins e suporte
    já ao Python 3.0
•   http://www.activestate.com/activepython/




                                                    II Workshop de Software Livre - CIN/UFPE - Recife - PE
                                               39
                                                                                                             39
EasyClipse
• Distribuição
    customizada do
    Eclipse!

• Distribuição pronta para
    uso, inclusive com o
    ambiente para Python!

• Pydev já vem instalado !
•   http://www.easyeclipse.org/




                                       II Workshop de Software Livre - CIN/UFPE - Recife - PE
                                  40
                                                                                                40
PyCharm
• IDE em Python
    customizada com
    suporte incluso ao
    Django

• Excelente IDE para
    desenvolvimento WEB

• 30 dias gratuito
•   http://www.jetbrains.com/pycharm/




                                             II Workshop de Software Livre - CIN/UFPE - Recife - PE
                                        41
                                                                                                      41
Outros Editores

Notepad++, GEdit, VIM, Emacs, IDLE, Eric IDE,
              TextMate, etc.



Vários editores ao seu dispor compatíveis com Python!




                               II Workshop de Software Livre - CIN/UFPE - Recife - PE
                          42
                                                                                        42
Seu shell incrementado...
• IPython (Disponível para Linux, Mac, Windows)
 • http://ipython.scipy.org/
• BPython (Disponível para Linux e Mac OS)
 • http://bpython-interpreter.org/
• Incrementam o shell do seu interpretador
  Python com auto-complete, highlighting, etc.


                             II Workshop de Software Livre - CIN/UFPE - Recife - PE
                        43
                                                                                      43
Chega de conversa...


• É hora de por a mão na
  massa!




                                II Workshop de Software Livre - CIN/UFPE - Recife - PE
                           44
                                                                                         44
Por onde começo ?
... Criando nosso primeiro Hello World !




                         II Workshop de Software Livre - CIN/UFPE - Recife - PE
                    45
                                                                                  45
... em Python ...


  print “Hello World”




                                                               Exemplos1.py

               II Workshop de Software Livre - CIN/UFPE - Recife - PE
          46
                                                                              46
Tipos e operações
 Vamos ver um trecho de código em
             Python!




                     II Workshop de Software Livre - CIN/UFPE - Recife - PE
                47
                                                                              47
Código Base




               II Workshop de Software Livre - CIN/UFPE - Recife - PE
          48
                                                                        48
... entendendo o código...
• Atribuição utiliza = e comparação utiliza ==




                                II Workshop de Software Livre - CIN/UFPE - Recife - PE
                           49
                                                                                         49
... entendendo o código...
• Atribuição utiliza = e comparação utiliza ==




                                II Workshop de Software Livre - CIN/UFPE - Recife - PE
                           50
                                                                                         50
... entendendo o código...
• Números: + - * / % tem suas funções características
 •   + pode ser usado como concatenação de Strings;

 •   % pode ser usado para formatar Strings (assim como em C).




                                            II Workshop de Software Livre - CIN/UFPE - Recife - PE
                                     51
                                                                                                     51
... entendendo o código...
• Números: + - * / % tem suas funções características
 •   + pode ser usado como concatenação de Strings;

 •   % pode ser usado para formatar Strings (assim como em C).




                                             II Workshop de Software Livre - CIN/UFPE - Recife - PE
                                      52
                                                                                                      52
... entendendo o código...
• Operadores lógicos são palavras e não símbolos (||,
  &&)

 •   and, or, not




                                II Workshop de Software Livre - CIN/UFPE - Recife - PE
                           53
                                                                                         53
... entendendo o código...
• Operadores lógicos são palavras e não símbolos (||,
  &&)

 •   and, or, not




                                II Workshop de Software Livre - CIN/UFPE - Recife - PE
                           54
                                                                                         54
... entendendo o código...
• print é o comando básico para “impressão” na tela




                               II Workshop de Software Livre - CIN/UFPE - Recife - PE
                          55
                                                                                        55
... entendendo o código...
• print é o comando básico para “impressão” na tela




                               II Workshop de Software Livre - CIN/UFPE - Recife - PE
                          56
                                                                                        56
... entendendo o código...
• E se você quiser receber uma entrada diretamente
  do usuário ?

   • raw_input()   - retorna uma string !




                                                                         Exemplos1.py

                                 II Workshop de Software Livre - CIN/UFPE - Recife - PE
                            57
                                                                                          57
... entendendo o código...
• A primeira atribuição em uma variável também é
  responsável por cria-lá.
   •   Os tipos das variáveis não precisam ser informados;
   •   Python descobre o tipo da variável por conta própria!




                                             II Workshop de Software Livre - CIN/UFPE - Recife - PE
                                      58
                                                                                                      58
... entendendo o código...
• A primeira atribuição em uma variável também é
  responsável por cria-lá.
   •   Os tipos das variáveis não precisam ser informados;
   •   Python descobre o tipo da variável por conta própria!




                                             II Workshop de Software Livre - CIN/UFPE - Recife - PE
                                      59
                                                                                                      59
!
 !"#$%&'&'"()**+,-
 ... Usando o Shell
 !   .#/#'&01)/'2$3&/4#56)"'7&4&'481&%&"')'#1/2091&"'%)'
     94'&0:)1&'0#"1#');)791#/'&'7&4#$%&'<%2/=>'?0">@'A9%&'
     )4'.B1(&$'8'&0:)1&C
      ! DDD%2/+<"1/2$E'%)'1)"1)=-
      ! F19%&'"&0/)'"1/2$E"CD
      ! DDD

 !   .#/#'G2"9#*2H#/'#'%&794)$1#5I&'%)'94'?0:)1&'0#"1#'
     );)791#/'&'7&4#$%&'<()*J=
      ! DDD()*J+KLLL-
      ! FM&794)$1#5I&'%&'&0:)1&'N$1)2/&D
      ! DDD



                                     II Workshop de Software Livre - CIN/UFPE - Recife - PE
                                60
                                                                                              60
!
 !"#$%&'&'"()**+,-
 ... Usando o Shell
 !   .#/#'/)0)12/'&'3&4#$%&'#$1)/2&/'0&%)5")
     ! !"#/'#'")1#'0#/#'324#
     ! 62721#/'89:

 !   .#/#'$#;)7#/')$1/)'&"'3&4#$%&'<=')>)3?1#%&"'@#"1#'
     ?"#/'#"'")1#"'0#/#'324#')'0#/#'@#2>&

 !   .#/#'&@1)/'#<?%#'7)/#*')>)3?1#5")'&'3&4#$%&'A()*0+-B
     ! .#/#'"#2/'%&'()*0'AC?21B
     ! .#/#'&@1)/'#'*2"1#'%&"'4D%?*&"'
      A4&%?*)"B
 !   .#/#'2$1)//&40)/'#*7?4'3&4#$%&'A31/*'E'FB
                                    II Workshop de Software Livre - CIN/UFPE - Recife - PE
                               61
                                                                                             61
Whitespace
• Importante para identação e novas linhas
   •   Use  para quando for para uma próxima linha prematuramente.


• Em Python    não há { } !! Isso é para definição de
  dicionários (dict)

• Blocos de código definidos por identação!

                                                                                  Exemplos1.py


                                          II Workshop de Software Livre - CIN/UFPE - Recife - PE
                                   62
                                                                                                   62
Comentários
• Comentários começam com #
   •    Convenção: Você pode definir uma “documentação” em string como
       primeira linha de qualquer nova função que você definir.
   •   Muito importante para o desenvolvedor, crítico para o usuário!




                                            II Workshop de Software Livre - CIN/UFPE - Recife - PE
                                     63
                                                                                                     63
!
 !"#"$%&#'(%)$"*+&*%),-
Conhecendo a linguagem...
 !   .)/"0)$"0&/%&*%),"+"
     ! 12&0,3-
      ! 444"*5*67
      ! 444"*5*8%&(%&9
      ! 444

 !   :-#%&0&/%&*%),"+";*/<-*&2)(%&*$"(%=
     ! >&*?@)(&#*0@+"#*-*%),-;*@(&*@0"*
      A@/B<-
      ! 12&0,3-
        !   444"*5*C)/%D*6=7*E*1FFGHHH
        !   444"*5*)/%C6=7D

                                   II Workshop de Software Livre - CIN/UFPE - Recife - PE
                              64
                                                                                            64
!
 !"#$%&%'(")
 Conhecendo a linguagem...
 !   *+,-.,))/0-1"#$%&%'+,-1"-20.,)
      ! 3%4%
        !   052-%-6-78
      ! 9:2;,5
        !   %-6-7

 !   *+,-.,))/0-#,<%51,)-1"#$%&%204,)-=>?@40,)AB
      ! 3%4%
        !   C$D,-5-6-5"E-C$D,=B8
      ! 9:2;,5
        !   5-6-C$D,=B


                                    II Workshop de Software Livre - CIN/UFPE - Recife - PE
                               65
                                                                                             65
Tipos Básicos
• Inteiros    (padrão para números)
   •   Divisão entre inteiros, resposta um inteiro!


• Inteiros Longos
   •   L ou l no final. (Convertido automaticamente com precisão de inteiros >
       32 bits)


• Floats (ponto flutuante)
   •   1.23, 3.4e-10


• Complexas
   •   >> 2 + 3j

                                                                                     Exemplos1.py
                                              II Workshop de Software Livre - CIN/UFPE - Recife - PE
                                       66
                                                                                                       66
Tipos Básicos
• Representação numérica
    •   Representação de dígitos com/sem formatação de string


• Divisão clássica / base
    •   Uso dos operadores // e /


• Operações em nível de bit
    •   1 << 2 , 1| 2 ,     1&2


• Notações hexadecimal / octal
    •   2 , 0x10 , 0100 , oct(64), hex(255) , int(‘200’), int(‘0100’,8) , int(‘0x40’,16)


• Operações válidas: +, *, >> , ** , pow, abs, round, etc.                               Exemplos1.py
                                                  II Workshop de Software Livre - CIN/UFPE - Recife - PE
                                          67
                                                                                                           67
Tipos Básicos

• Strings
    !
   •   “abc” ou ‘abc’
       !"#$%&'&($)*"+",-.%

       "#$%&'&     ()*&+,&$-(.(/01(
          /01      2.3$+&45.
         /061      ).3$+&$5&785"9
          /:1      )"7$+&45.
         /:61      )"7$+&$5&785"9                     !!!"#$%&!&'()*%
         /661      785"9&;$<=.>$&':+.?.+@3(7"A        !"#$%&'()*$&+&)('#%,$-+.../
          /B61     #7?.+.3>.
         /0:1      #7?.+.3>.
           /7%1    785"9#"#.&#.&$<=.>$%
        /7%&3$>1   #7?.+.3,"&#.&$<=.>$%




                                                                                            Exemplo1.py
       !!!+,(-.#/&0&+1()2%3444/
       '()*%                                            II Workshop de Software Livre - CIN/UFPE - Recife - PE
                                                 68
                                                                                                                 68
Comandos básicos
     !
       !"#$%&'()$*"+),-$.*/0&/%($.
•   Alguns comandos básicos que podem ajudar no ínicio!
     •    dir(element) - todos
         ! 1$"'()$*"#$%&'        os atributos e métodos que estão associados a
         elemento.
          ! 20/3,&'*&,)$*4,/*/.&56/%*/"*#%5"/5%$*
     •      7-$3$*($*"+),-$
         type(element) - Descobrir o tipo do objeto!
     •   import - importe módulos para uso no seu código!
          ! 8$%('*65.96/-*$7:/&$.*/*./,.*%/.#/3&56$.*
            ";&$)$.
                   !"#$%& !"#$%&#
                   !"#$%& !"#$%&#'(&)#
                   !"#$%& !"#$%&#'(&)#!'(!"(&)
                   )     !"#$%&#!!"#$%& !*
                     )   !"#$%&#!!"#$%& !(&)#
                       ) !"#$%&#!!"#$%& !(&)#'+,-"!'(!(+,




                                                  II Workshop de Software Livre - CIN/UFPE - Recife - PE
                                            69
                                                                                                           69
Exercício 01

• Faça um programa que peça 2 números e um real.
   •   Calcule e mostre:
       •   O produto do dobro do primeiro com a metade do segundo
       •   A soma do triplo do primeiro com o terceiro
       •   O terceiro elevado ao cubo




                                             II Workshop de Software Livre - CIN/UFPE - Recife - PE


                                        70
                                                                                                      70
Atribuição
  ... Vamos entender como funciona
              atribuição!




                      II Workshop de Software Livre - CIN/UFPE - Recife - PE
                 71
                                                                               71
Atribuição
•   Atribuição de uma variável em Python significa criar um rótulo
    para armazenar uma referência para algum objeto.
     •   Atribuição cria referências e não cópias!
     •   Inferência do tipo da referência baseado no tipo de dado atribuído


•   A referência é deletada por meio de Garbage Collection
     •   Quando o objeto deixa de ser referenciado por nenhum outro
         rótulo(variável).




                                                 II Workshop de Software Livre - CIN/UFPE - Recife - PE


                                          72
                                                                                                          72
Atribuição
•   Lembre-se que Python a tipagem é dinâmica!
     •   Declarar variáveis sem atribuí-las irá levantar um erro!




                                                  II Workshop de Software Livre - CIN/UFPE - Recife - PE
                                           73
                                                                                                           73
Atribuição
•   Você pode inicializar várias variáveis de uma só vez!
     •   x = y = z = 2.0


•   Rótulos de variáveis são Case Sensitive e não podem iniciar
    com número. Números, letras e underscores são permitidos!
     •   bob bob_2 _bob _2_bob bob_2 BoB


•   Não esquecer das palavras reservadas!




                                       II Workshop de Software Livre - CIN/UFPE - Recife - PE
                                  74
                                                                                                74
Atribuição
•   Entendendo manipulação de atribuição de referências
     •   x = y não significa que você fez uma cópia de y!
     •   x = y o que realmente faz é x referencia ao objeto que y referencia!


•   O que realmente acontece por trás dessa simples atribuição:




                                                II Workshop de Software Livre - CIN/UFPE - Recife - PE


                                         75
                                                                                                         75
Atribuição
•   Mas e se fizermos isso ?! Qual será o valor de x ?
>>> x = “casa”
>>> y = x
>>> x = “fazenda”
>>> print x




                                      II Workshop de Software Livre - CIN/UFPE - Recife - PE
                                 76
                                                                                               76
Atribuição
•    Mas e se fizermos isso ?! Qual será o valor de x ?
    >>> x = “casa”
    >>> y = x
    >>> y = “fazenda”
    >>> print x

•    Do mesmo jeito que nós esperávamos! Dados nativos são
     imutáveis! (String, Inteiros, float, complexos).
>>> x = “casa” #cria 3, x referencia ao objeto string “casa”
>>> y = x         # Cria variavel y, referencia ao objeto string “casa”
>>> y = “fazenda” #Cria referencia ao objeto string “fazenda”
>>> print x          # Nenhum efeito em x, ainda referencia “casa”
>>> casa
                                                    II Workshop de Software Livre - CIN/UFPE - Recife - PE
                                             77
                                                                                                             77
Listas, Strings e Tuplas
    ... O poder de python agora!




                      II Workshop de Software Livre - CIN/UFPE - Recife - PE
                 78
                                                                               78
Listas, Strings e Tuplas
•   Todos os três são Sequências!
     •   Podem ser indexados por algum valor ordinal posicional
     •   Todas as operações apresentadas aqui nesta seção podem ser aplicadas em
         todos os tipos de sequência


•   Listas
     •   li = [1,2,3, ‘abc’]


•   Tuplas
     •   li = (23, ‘abc’, 4.56, (2,3), ‘def’)


•   Strings
     •   st = “Hello World” st = ‘Hello World’
                                                                                               Exemplos2.py

                                                     II Workshop de Software Livre - CIN/UFPE - Recife - PE
                                                79
                                                                                                              79
Listas, Strings e Tuplas

•   Manipulando sequências!
     •   Pelo índice a partir de 0    Ex: ti [0]
     •   Índices podem ser positivos ou negativos! Ex: ti[1] (esq.) ti[-4] (dir.)


•   Fracionamento e matrizes!
     •   li[1:3] L[1:] matrix = [[1,3,4] , [3,5,6] , [7,8,9]]


•   Operador in
     •   retorna um booleano. Checa se um valor está em uma sequência!
         •   4 in li


                                                                                             Exemplos2.py

                                                   II Workshop de Software Livre - CIN/UFPE - Recife - PE
                                            80
                                                                                                            80
!
Listas, Strings e Tuplas
 !"#$%#&'&%()##%*+,&"$)*#

 !   -*+"()&.,#"$"/,#&)&*)0%$"/,#
 !!!"#$#%&'(')'*'+,#!"#$%&'()*%)+$,-%
 !!!"%-,
 &
 !!!"%(,
 )
 !!!"%.&,
 +
 !!!"%.),
 )
 !!!"%&/,
 %(')'*'+,
 !!!"%/),
 %&'('),
 !!!"%&/*/(,#!%"#.,"$*()()/%,,(0)"(+.-%1,.)/2+%3*()*.)4).5)4
 %('*,
 !!!"%//.&,
 %+'*')'('&,#!/%,,()3.6%-$7()$37.#-.)%),.8293"$%


                                                                                      Exemplos2

                                          II Workshop de Software Livre - CIN/UFPE - Recife - PE
                                    81
                                                                                                   81
Operacões em Listas
•   Operador + , *
     •   a = “Hello” + “ World” (concatenação)
     •   [3] * 4 (repetição)


•   Operador len() e append()
     •   len() - retorna um inteiro com o tamanho da sequência!
     •   append() - adiciona um elemento ao final da lista!


•   Atribuição
     •   list[0] = ‘3’

     • Fazendo cópias de sequência , Cuidado!!!
                                                                                           Exemplos2.py

                                                 II Workshop de Software Livre - CIN/UFPE - Recife - PE
                                         82
                                                                                                          82
Operacões em Listas
•   Qual será o valor de b ?
>>> a = [1,2,3]
>>> b = a
>>> a.append(4)
>>> print b




                                    II Workshop de Software Livre - CIN/UFPE - Recife - PE
                               83
                                                                                             83
Operacões em Listas
•    Qual será o valor de b ?

>>> a = [1,2,3]
>>> b = a
>>> a.append(4)
>>> print b

•    Surpresa!

    >>> b = [1,2,3,4]


•    Dados do tipo listas, dicionarios e pré-definidos pelo usuário
     são mutáveis!


                                       II Workshop de Software Livre - CIN/UFPE - Recife - PE
                                  84
                                                                                                84
Operacões em Listas




                 II Workshop de Software Livre - CIN/UFPE - Recife - PE
            85
                                                                          85
Operacões em Listas
•   Para fazer cópias de listas
     •   a = b[:] (2 cópias independentes)
     •   a = b (os 2 referenciam o mesmo objeto)


•   Qual a diferença entre listas e tuplas ?
     •   Listas são mutáveis e Tuplas imutáveis!
     •   l = [1,‘abc’,4] t = (1,‘abc’,4,5)


•   Atribuição em listas e tuplas
     •   list[0] = ‘3‘ ok!
     •   t[0] = 3 NOK!!! (Deve-se criar uma nova tupla! - t = (3, ‘abc’,4,5)


                                                                                             Exemplos2.py

                                                   II Workshop de Software Livre - CIN/UFPE - Recife - PE
                                             86
                                                                                                            86
Tuplas x Listas
!
   • Listas
 !"#$%& são mais lentas porém mais poderosas que tuplas
             •    Listas podem ser modificadas e tem diversos operadores que podem ser
                  utilizados
 !   '(%)*+%,-.)-/*0"%*&/%/$*&)%&1/+2,/",%/3*4-(-.5%/&")*$1/
             •  Tuplas são imutáveis e tem menos funcionalidades!
     &62/*,")78-*&

 !   /9&%:&-/%/4".562/)"#$-;</#%(%/)(%.&42(,%(/2")(2&/)*#2&/
       •
     -,/)"#$%& converter entre listas e tuplas ?
           Para
                 !!!"#$#%&'(')'*'+,
                 !!!-./012"3
                 2&'(')'*'+3
                 !!!045-2-./012"33
                 %&'(')'*'+,
                 !!!610/2-./013#!"#$%&%'#"())
                                                                                                  Exemplos2.py

                                                        II Workshop de Software Livre - CIN/UFPE - Recife - PE
                                                 87
                                                                                                                 87
!
 Exercício 02
 !"#$%&%'()*+*

 !   ,(-.$#/0#)1-)-#23'4.#)5'-.1-6)7#$'8171-)7#9
     ! :;6*6<6=6>6?6@6A6B6C6*;6**6*<6*=6*>6*?D
        !   E4.#$815()7#)*)1)C
        !   E4.#$815()7#)B)1)*=
        !   FG0#$(-)H1$#-
        !   FG0#$(-)&0H1$#-
        !   I(7(-)(-)0G5.'H5(-)7#)<6)=)#)>
        !   J'-.1)$#8#$-1
        !   K1LM()#4.$#)1)-(01)7()'4.#$815()7#)*;)1)*?)H#5()
            '4.#$815()7#)=)1)C)#0)N5(1.O




                                        II Workshop de Software Livre - CIN/UFPE - Recife - PE
                                  88
                                                                                                 88
Métodos muito usados

•   append(), insert(), extend(), del()

•   min(), max()

•   index(), count(), remove(), pop()

•   reverse() , sort()

•   etc.


                                                                                    Exemplos2.py

                                          II Workshop de Software Livre - CIN/UFPE - Recife - PE
                                  89
                                                                                                   89
Strings

•   Formatação e conversão de Strings

•   Usam os mesmos operadores básicos de lista

•   Multi-Strings, Strings com aspas simples e duplas

•   Caracteres Speciais e str() e unicode()



                                                                                 Exemplos2.py

                                       II Workshop de Software Livre - CIN/UFPE - Recife - PE
                                  90
                                                                                                90
Strings
•   Também uma sequência e é Imutável!
     •   “42” + 1 (erro!) Use “42” + str(1)
     •   float(), int() -> string para numéro


•   Atribuição
     •   S = ‘spam’ S[0] = ‘x’ ERRO!!!
     •   Strings são imutáveis!
     •   String -> Lista -> String (.join)


•   Formatação de string


                                                                                            Exemplos2.py

                                                  II Workshop de Software Livre - CIN/UFPE - Recife - PE
                                             91
                                                                                                           91
Métodos mais usados

•   find(), replace(), join(), split()

•   isdigit(), islower(), strip(),

•   startswith(), upper(), lower()

•   etc.



                                                                                       Exemplos2.py

                                             II Workshop de Software Livre - CIN/UFPE - Recife - PE
                                        92
                                                                                                      92
Exercício 03
•   Crie uma lista com o nome de 10 pessoas e sorteie uma
    pessoa, depois embaralhe novamente e sorteie outra (sem
    repetição)

    • Dica: help(random) - módulo para
      aleatoriedade.

•   Faça um programa que permita ao usuário digitar o nome
    e em seguida mostrar ao usuário de trás pra frente
    somente em letras maiúsculas.

    • Dica: Procure pela documentação do
      help(“”) !

                                    II Workshop de Software Livre - CIN/UFPE - Recife - PE
                               93
                                                                                             93
Dicionários
    Um “hash map” pythonico!




                    II Workshop de Software Livre - CIN/UFPE - Recife - PE
               94
                                                                             94
Dicionários

•   Estrutura de dados em forma de coleções onde os items são
    armazenados e buscados pela chave em vez do deslocamento
    posicional.
     •   Chaves podem ser quaisquer objetos do tipo imutável
     •   Valores podem ser de qualquer tipo
     •   Um dicionário pode armazenar diferentes tipos de valores e é mutável!


•   Criando e modificando dicionários!
     •   d = {“user” : “Marcel” , “password”: 2342}



                                                                                           Exemplos3.py

                                                 II Workshop de Software Livre - CIN/UFPE - Recife - PE
                                          95
                                                                                                          95
Dicionários

•   Dicionários não são ordenados!
     •   Uma nova chave pode aparecer em qualquerr lugar
     •   Funciona como “hashing”


•   Algums métodos:
     •   has_key(‘eggs’) , clear() , del d[‘key’] , keys(), values(), items(), get() , update()
     •   copy() fazer cópias de dicionários ! (Lembre-se que dicionario é mutável!)




                                                                                                Exemplos3.py

                                                      II Workshop de Software Livre - CIN/UFPE - Recife - PE
                                              96
                                                                                                               96
Arquivos
 Como é fácil manipular um arquivo!




                      II Workshop de Software Livre - CIN/UFPE - Recife - PE
                 97
                                                                               97
Arquivos

•   Apenas uma linha para abrir um arquivo!
     •   file = open(“data”, ‘r’)      tipos: r, a, w


•   Alguns métodos para operações em arquivos:
     •   file.read(), readline(), readlines(),
     •   file.write(), writelines(),
     •   file.close()




                                                                                                 Exemplos3.py

                                                       II Workshop de Software Livre - CIN/UFPE - Recife - PE
                                                98
                                                                                                                98
Booleanos
     Expressões lógicas




                  II Workshop de Software Livre - CIN/UFPE - Recife - PE
             99
                                                                           99
Expressões lógicas

•   True e False são constantes em Python
     •   False : 0, None, [] , {} , 0.0
     •   True: Valores Numéricos exceto 0, objeto não vazios
     •   Um dicionário pode armazenar diferentes tipos de valores e é mutável!


•   Operadores de comparação: ==, != , < , <=, etc.
     •   X == Y ( efetua teste de equivalência de valor)
     •   X is Y (Testa a identidade do objeto)




                                                                                           Exemplos3.py

                                                 II Workshop de Software Livre - CIN/UFPE - Recife - PE
                                          100
                                                                                                          100
Expressões lógicas

•   None é similar ao NULL em linguagem C
     •   L = [None] * 100 (declara uma lista de 100 items None )


•   Operações com or e and
     •   not -> inversão lógica (true -> false , false -> true)
     •   and e or (&& e II)


•   isinstance(element,type)
     •   Verifica se um elemento é do tipo type


                                                                                               Exemplos3

                                                   II Workshop de Software Livre - CIN/UFPE - Recife - PE
                                           101
                                                                                                            101
Exercício 03




                     II Workshop de Software Livre - CIN/UFPE - Recife - PE
               102
                                                                              102
Exercício 04




                     II Workshop de Software Livre - CIN/UFPE - Recife - PE
               103
                                                                              103
Instruções compostas
      If python == “cool”:
            print “Oh yeah!”




                     II Workshop de Software Livre - CIN/UFPE - Recife - PE
               104
                                                                              104
Fluxo de Controle

•   Várias expressões Python para controlar o fluxo do programa.
    Todos eles fazem uso de testes condicionais booleanos.
     •   ifs, else
     •   loops while, for




                                     II Workshop de Software Livre - CIN/UFPE - Recife - PE
                               105
                                                                                              105
Instruções if




                                                                  Exemplos4

                      II Workshop de Software Livre - CIN/UFPE - Recife - PE
                106
                                                                               106
Instruções while




                                                               Exemplos4

                   II Workshop de Software Livre - CIN/UFPE - Recife - PE
             107
                                                                            107
Instruções while
•   Você pode usar o comando break para sair do loop mais
    próximo que a envolve.

•   Você pode usar o comando continue para pular para o ínicio do
    loop mais próximo que a envolve e pular para a próxima
    iteração.

•   Você pode usar o comando pass quando você não quer que se
    faça nada (instrução vazia)

•   Você pode o o bloco else do loop para quando se quer executar
    um código quando se sai normalmente do loop (sem ser por
    comando break)
                                                                               Exemplos4.py

                                     II Workshop de Software Livre - CIN/UFPE - Recife - PE
                               108
                                                                                              108
Instruções for
•   Loops for iteram sobre uma sequência de items (listas, tuplas,
    string ou quaisquer outros objetos cuja a linguagem considere
    como um “iterator”)

•   Várias maneiras de iterar sobre um conjunto de items!

•   Também possui o bloco else quando se sai normalmente do
    loop (similar ao while)

•   Função muito usada nos loops for: range()
     •   range() - Retorna uma lista de números que varia de 0 a ao número passado
         como parâmetro.
                                                                       Exemplos4.py

                                               II Workshop de Software Livre - CIN/UFPE - Recife - PE
                                        109
                                                                                                        109
Instruções for




                   II Workshop de Software Livre - CIN/UFPE - Recife - PE
             110
                                                                            110
Instrução zip
•   A função range() percorre sequências de maneira exaustiva. A
    função interna zip permite usar loops for para visitar várias
    sequências em paralelo.

•   zip() é bastante poderoso, pode unir sequências onde retorna
               !
    uma lista de tuplas que se distribuem em pares os items
    paralelos extraídos dessas sequências.

•   Permite também facilitar a construção de dícionarios!
               !

     •   x = dict(zip(kes,vals))
                     !
                         !
                         !
                         !
                         !
                         !                                                         Exemplos4.py
                         !
                                         II Workshop de Software Livre - CIN/UFPE - Recife - PE
                                   111
                                                                                                  111
Compreensão de listas
    [i for i in “python é fácil demais”]




                       II Workshop de Software Livre - CIN/UFPE - Recife - PE
                 112
                                                                                112
Compreensão de listas
    !
      !"#$%&&'()"*+&*,-(./( linguagem Python
•   Funcionalidade muito poderosa da
     • 01.2"'*(3$"%./*4"#$%&(()"*+&*,-(./(5*4%-/*,-(./(*+&*6"%#/* da lista original.
         Gera uma lista nova aplicando uma função para cada elemento
     • 674-,*&*%7$-+/8*9*3("*+&*4"#$%&(()"*+&*,-(./(*:*;&#* de código!)
     !
         Muito usado por programadores Python! (Economia
         4"#3#*&#*#/.&#7.-4/8

•   A !sintaxe da compreensão de lista usa-se de palavra-chaves:
        0"%*&<&#$,"
          ! =*>*?<@*A*<*-'*?B*888*CDD

             •   [expression for name in list]
          ! E*>*?<*F*<*-'*=*/'+*<*&G&'D

     !   H#*$1.2"'*.&#"(
          ! III(*>*J<KKL*6"%*<*-'*%/'M&NOBPQ
          ! III#*>*J<*6"%*<*-'*(*-6*<RL*>>*BQ


                                                                                         Exemplos4.py

                                               II Workshop de Software Livre - CIN/UFPE - Recife - PE
                                        113
                                                                                                        113
Compreensão de listas


•   Permite também o uso de filtros (deteminam se uma
    determina expressão deve ser executada sobre um membro da
    !
    lista)
     !"#$%&&'()"*+&*,-(./(012

     !
                •    [expression for name in list if filter ]
         3.-,-4/%*+-5-"'6%-"(7*&8&#$,"9
             ! :::+;<=>",?=9@AAAA7=5&,./=9BCAAA7=D-,E8=9FGAAA7
               =?E(5/=91AAAH
             ! :::$"((-I-,-+/+&(J%-5"*;*K5/%*?"%*5/%*-'*+*-?*+K5/%L*
               M*NAAAAL
             ! :::$"((-I-,-+/+&(J$"I%&*;*K5/%*?"%*5/%*-'*+*-?*
               +K5/%L*M*1AAL                                                               Exemplos4.py
     !   O#*(.%-'>(
                                              II Workshop de Software Livre - CIN/UFPE - Recife - PE
            ! :::*'"#&*;*=P'P'*QQ*OQP'QQ(Q.QP'P'QP'/*
                                          114
              ?Q%P'P'/QQQ(P'&*P.-QQ'RQQ/Q*Q(QQEP'QSP'&QQP
              'P'Q-P'%QQ/QT***P'QQ*P'P'P'P'=                                                              114
Exercício 05

• Faça
!         um programa que imprima na tela apenas os
  números ímpares entre 1 e 50 (usando compreensão de
 !"#$%&%'()*+*
  listas!)

 !   ,#-.()/01)2'341)5#)-(0#3)5#)%2133#3)(3)6/1'3)#347()
     #3%$'4(3)-()#34'2()/-5#$2'-#)89-(0#:(/4$(:-(0#;<)#)
     1=($1)0/5(/>3#)()?15$7()?1$1)@10#2@13#+)A#5#>3#)/0)
     2'341)%(0)(3)-(0#3)4(5(3)#0)@10#2@13#+
          ! BBB2'341:-(0#:%2133#3CD94#21:?$'-%'?12;E;01?1:5
            #:5'3?(3'4'F(3;E;%2133#:-#=(%'(:?#315(;E;1%/0/21
            5($;E;G'0:51:2'341:5#):5#:%2133#3:5(:#"#$%'%'(;H
     ! I'%1J
       ! K3#)13)G/-LM#3)34$+4'42#)#)34$+3?2'4

                                              II Workshop de Software Livre - CIN/UFPE - Recife - PE
 !   N#?(341O                          115
        ! $#3?(341)C)DPP+Q('-8DR+4'42#8<)G($)R)'-)SH<)G($)S)'-)                                        115
Funções
...Seu programa tendo cara de programa!




                         II Workshop de Software Livre - CIN/UFPE - Recife - PE
                   116
                                                                                  116
Definindo Funções
Definição da função inicia com “def ”




                                             II Workshop de Software Livre - CIN/UFPE - Recife - PE
                                       117
                                                                                                      117
Definindo Funções
Definição da função inicia com “def ”   Nome da função




                                             II Workshop de Software Livre - CIN/UFPE - Recife - PE
                                       118
                                                                                                      118
Definindo Funções
Definição da função inicia com “def ”   Nome da função                       Argumentos




                                             II Workshop de Software Livre - CIN/UFPE - Recife - PE
                                       119
                                                                                                      119
Definindo Funções
Definição da função inicia com “def ”   Nome da função                       Argumentos




   Identação




                                             II Workshop de Software Livre - CIN/UFPE - Recife - PE
                                       120
                                                                                                      120
Definindo Funções
Definição da função inicia com “def ”   Nome da função                        Argumentos




   Identação




                                              “return” indica o
                                             retorno da função




                                              II Workshop de Software Livre - CIN/UFPE - Recife - PE
                                       121
                                                                                                       121
Definindo Funções
Definição da função inicia com “def ”   Nome da função                        Argumentos




   Identação




                                              “return” indica o
                                             retorno da função


    Sem header file
    Sem declaração do tipo de retorno da função ou do tipo dos argumentos


                                              II Workshop de Software Livre - CIN/UFPE - Recife - PE
                                       122
                                                                                                       122
Chamando uma função
•   Sintaxe básica para chamar uma função:



                    >>> def myfun(x, y):
                            return x * y
                    >>> myfun(3, 4)
                    12




                                                                                Exemplos5.py

                                      II Workshop de Software Livre - CIN/UFPE - Recife - PE
                                123
                                                                                               123
Passagem de parâmetros
•   Várias métricas podem ser usadas na passagem dos parâmetros
    de uma função:


                    >>> def myfun(x, y):
                            return x * y
                    >>> myfun(3, 4)
                    12
                    >>> myfun(y=3, x=4)
                    12
                    >>> myfun(3, y=4)
                    12

                                                                               Exemplos5.py

                                     II Workshop de Software Livre - CIN/UFPE - Recife - PE
                               124
                                                                                              124
Parâmetros com valores padrões
•   Cada parâmetro pode ter um valor padrão.
    •   Utilizado quando um parâmetro é omitido na chamada da função

         def myfun(x, y = 0.3, prompt = True):
             res = x * y
             if prompt:
                 print “Resposta é %f”, res

              return res




                                                                                          Exemplos5.py

                                                II Workshop de Software Livre - CIN/UFPE - Recife - PE
                                         125
                                                                                                         125
Parâmetros com valores padrões
        def myfun(x, y = 4, prompt = True):
            res = x * y
            if prompt:
                print “Resposta é %i”, res

             return res


•   Esta função pode ser invocada de várias formas:
         >>> myfun(3)
         Resposta é 12
         12
         >>> myfun(x=3, prompt = False)
         12
         >>> myfun(5, 2, False)
         10                                                                     Exemplos5.py

                                      II Workshop de Software Livre - CIN/UFPE - Recife - PE
                                126
                                                                                               126
Valor de retorno
•   Toda função em Python retorna alguma valor;
    •   Mesmo funções que não possuem a cláusula return.



•   Funções que não possuem return retornam None.
    •   None é uma constante especial definida na linguagem;

    •   Similar a NULL, void, ou nil em outras linaguagens;

    •   É lógicamente equivalente à False;

    •   O interpretador não imprime None.




                                                   II Workshop de Software Livre - CIN/UFPE - Recife - PE
                                             127
                                                                                                            127
Valor de retorno
•   Uma função pode retornar mais de um valor

                  >>> def teste():
                          x = 1
                          y = 2
                          z = 3

                            return x, y, z

                  >>>   x, y, z = teste()
                  >>>   ret = teste()
                  >>>   ret
                  (1,   2, 3)
                                                                              Exemplos5.py

                                    II Workshop de Software Livre - CIN/UFPE - Recife - PE
                              128
                                                                                             128
Algumas funções especiais
... e Python também tem seu momento funcional!




                             II Workshop de Software Livre - CIN/UFPE - Recife - PE
                       129
                                                                                      129
Parâmetros args




                                                                             Exemplos5.py

                    II Workshop de Software Livre - CIN/UFPE - Recife - PE
              130
                                                                                        130
Funções map, reduce e filter

•   Função map(func, seq)
    •   Função interna que aplica uma função func a cada item de um objeto sequência
        (seq) e retorna uma lista com os resultados da chamada da função.



•   Função filter(func, seq)
    •   Função interna que aplica uma função filtro func a cada item de um objeto
        sequência (seq) e retorna uma lista com os resultados que satisfazem os critérios
        da função de teste seq.



                                                                                             Exemplos5.py

                                                   II Workshop de Software Livre - CIN/UFPE - Recife - PE
                                           131
                                                                                                            131
Módulos
... Módulos: o que é, como criar e como utilizar.




                              II Workshop de Software Livre - CIN/UFPE - Recife - PE
                        132
                                                                                       132
Introdução 1/2
•   Quando você encerra o interpretador, todas as definições de
    variáveis e funções são perdidas;
    •   Solução é gerar um script e roda-lo.



•   Mas e se você desejar utilizar um determinada função do script
    em outro programa?

    •   Solução são os módulos!




                                                     II Workshop de Software Livre - CIN/UFPE - Recife - PE
                                               133
                                                                                                              133
Introdução 2/2
•       Um módulo é um arquivo .py contendo definições e comandos
        Python:
    •    Funções

    •    Variáveis e constantes

    •    Classes

    •    ...

•       Vantagem é a possibilidade de adicionar todas estas definições
        em outros arquivos ou módulos.
    •    Isto é feito utilizando a cláusula import




                                                     II Workshop de Software Livre - CIN/UFPE - Recife - PE
                                               134
                                                                                                              134
Executando módulos como scripts
•   Rodar um módulo Python é similar a importar as definições do
    módulo para o interpretador.
    •   Se você fizer python meuModulo.py irá carregar as definições e destruir
        logo em seguida!


•   Para executar algum determinado código de maneira similar à
    um script você deve testar a cláusula __name__ :

                    if __name__ == “__main__”:
                        print “Execute algum código”



                                                                                      Exemplos5.py

                                            II Workshop de Software Livre - CIN/UFPE - Recife - PE
                                      135
                                                                                                     135
Pacotes
•   Pacotes são coleções de módulos Python.
    •   Qualquer diretório do sistema operacional que contém um arquivo __init__.py
        dentro é considerado um pacote.

    •   Pacotes organizam módulos e permitem que programadores importem módulos
        da seguinte maneira:

          •   import meuPacote.meuSubPacote.meuModulo


                 # meuPacote/
                 #    __init__.py -- vazio
                 #    meuSubPacote/
                 #       __init__.py -- vazio
                 #       meuModulo.py -- modulo importado




                                                II Workshop de Software Livre - CIN/UFPE - Recife - PE
                                         136
                                                                                                         136
Caminho de busca dos módulos
•       Quando você executa import meuModulo o interpretador
        procura pelo arquivo meuModulo.py seguindo uma determinada
        regra.
    •    Primeiramente ele procura pelo arquivo no diretório corrente (onde o interpretador
         foi executado).

    •    Caso ele não encontre o arquivo no diretório corrente, a busca prossegue em uma
         lista de diretórios que é especificada na variável sys.path

•       Você pode atribuir novos diretórios de busca na variável
        sys.path (ela é uma lista dentro do módulo sys da biblioteca
        padrão)
    •    Útil quando você quer instalar seu módulo na máquina de um usuário.




                                                     II Workshop de Software Livre - CIN/UFPE - Recife - PE
                                             137
                                                                                                              137
Compilando um módulo Python
... Compilando??? Como assim??? Python não é
                interpretado???




                            II Workshop de Software Livre - CIN/UFPE - Recife - PE
                      138
                                                                                     138
Compilando um módulo Python
•       Sim, Python é e continua sendo interpretada!
    •    Python utiliza o conceito de byte-code (muito conhecido em Java).



•       O que acontece quando você importa um módulo:
    •    1) - Interpretador busca pelo arquivo .py correspondente;

    •    2) - Arquivo .py é “compilado” para o byte-code reconhecido pelo interpretador;

    •    3) - Byte-Code é incorporado a tabela de símbolos correntes do interpretador.




                                                      II Workshop de Software Livre - CIN/UFPE - Recife - PE
                                              139
                                                                                                               139
Compilando um módulo Python
•       Compilação para byte-code pode ser um gargalo de
        desempenho quando você carregar um programa!
    •    Especialmente se você utiliza muitos módulos em seu programa.



•       Solução é pré-compilar os módulos antes de rodar seu
        programa!




                                                    II Workshop de Software Livre - CIN/UFPE - Recife - PE
                                             140
                                                                                                             140
Exercício 06
•




                         II Workshop de Software Livre - CIN/UFPE - Recife - PE
                   141
                                                                                  141
QuickSort
•   Algoritmo de ordenação bastante utilizado e muito eficiente

    •   Complexidade BigO(nlogn)

        1 . Escolher um pivô inicial x;

        2. Colocar todos itens com chave menor que a de x à esquerda de x, formando
        uma seqüência S1;

        3. Colocar todos itens com chave maior que a de x à direita de x, formando uma
        seqüência S2;

        4. Isto feito, o mesmo processo é aplicado às seqüências S1 e S2, que por sua vez
        produzirão novos segmentos;

        5. O processo deve ser aplicado sucessivamente às seqüências enquanto
        elas tiverem tamanho ≥ 1;




                                                       II Workshop de Software Livre - CIN/UFPE - Recife - PE
                                               142
                                                                                                                142
QuickSort
•   Você pensaria assim...


def partition(list, l, e, g):
    if list == []:
        return (l, e, g)
    else:
        head = list[0]
        if head < e[0]:
            return partition(list[1:], l + [head], e, g)
        elif head > e[0]:
            return partition(list[1:], l, e, g + [head])
        else:
            return partition(list[1:], l, e + [head], g)




                                           II Workshop de Software Livre - CIN/UFPE - Recife - PE
                                     143
                                                                                                    143
QuickSort
•     Agora que você sabe compreensão de listas, você pode fazer
      assim!

    def qsort(L):
        if len(L) <= 1: return L
        return qsort( [ lt for lt in L[1:] if lt < L[0] ] ) +                                  [ L[0] ]            + 
               qsort( [ ge for ge in L[1:] if ge >= L[0] ] )




•    E não é que lembra a linguagem funcional Haskel ?!
                    # qsort [] = []
                    # qsort (x:xs) = qsort elts_lt_x ++ [x] ++ qsort elts_greq_x
                    #                 where
                    #                   elts_lt_x = [y | y <- xs, y < x]
                    #                   elts_greq_x = [y | y <- xs, y >= x]




                                                                II Workshop de Software Livre - CIN/UFPE - Recife - PE
                                                     144
                                                                                                                         144
Ordenação
•   Mas um programador Pythonico, ainda faria mais eficiente!


    list.sort()




•   Utiliza-se de uma implementação nativa de Python para
    ordenação de sequências! Mais eficiente, híbrido com
    complexidade no pior caso de nlogn.




                                      II Workshop de Software Livre - CIN/UFPE - Recife - PE
                                145
                                                                                               145
Python é muito poderoso!
•   Não precisa reinventar a roda! Molde-a para adaptar ao seu
    problema!




•   A documentação de Python é bastante vasta e há muitas
    funcionalidades prontas!

                                    II Workshop de Software Livre - CIN/UFPE - Recife - PE
                              146
                                                                                             146
Chegamos ao fim! =D




Hora da random.choice([pergunta, dúvida, discussão]) !!

                               II Workshop de Software Livre - CIN/UFPE - Recife - PE
                         147
                                                                                        147
Referências

•   I Workshop CINLUG de Python (Ministrado no CIN)
     •   http://www.cin.ufpe.br/~cinlug/files/workshop-python.1.pdf
     •   http://www.cin.ufpe.br/~cinlug/files/workshop-python.2.pdf


•   Mini-Curso de Introdução a Python (Avaty Tecnologia e Info.)
     •   http://www.avaty.com.br/artigos/CURSO-PYTHON.pdf




                                                II Workshop de Software Livre - CIN/UFPE - Recife - PE
                                        148
                                                                                                         148
Hello, I am Python!
           Marcel Caraciolo
  Mini-Curso De Introdução a Python




                       II Workshop de Software Livre - CIN/UFPE - Recife - PE
                 149
                                                                                149

Mais conteúdo relacionado

Mais procurados

Como Python está mudando a forma de aprendizagem à distância no Brasil
Como Python está mudando a forma de aprendizagem à distância no BrasilComo Python está mudando a forma de aprendizagem à distância no Brasil
Como Python está mudando a forma de aprendizagem à distância no BrasilMarcel Caraciolo
 
Python, por onde começar? @FTSL2014
Python, por onde começar? @FTSL2014Python, por onde começar? @FTSL2014
Python, por onde começar? @FTSL2014Ramiro Luz
 
O canivete suiço de Python
O canivete suiço de PythonO canivete suiço de Python
O canivete suiço de PythonVitor Casadei
 
Por que escolher Python?
Por que escolher Python?Por que escolher Python?
Por que escolher Python?Igor Leroy
 
Introdução à Programação Python e Tk
Introdução à Programação Python e TkIntrodução à Programação Python e Tk
Introdução à Programação Python e TkCarlos Campani
 
Python para iniciantes
Python para iniciantesPython para iniciantes
Python para iniciantesrichardsonlima
 
Python, por onde começar - Semana Technológica UTFPR 2015.
Python, por onde começar - Semana Technológica UTFPR 2015.Python, por onde começar - Semana Technológica UTFPR 2015.
Python, por onde começar - Semana Technológica UTFPR 2015.Ramiro Luz
 

Mais procurados (10)

Como Python está mudando a forma de aprendizagem à distância no Brasil
Como Python está mudando a forma de aprendizagem à distância no BrasilComo Python está mudando a forma de aprendizagem à distância no Brasil
Como Python está mudando a forma de aprendizagem à distância no Brasil
 
Python, por onde começar? @FTSL2014
Python, por onde começar? @FTSL2014Python, por onde começar? @FTSL2014
Python, por onde começar? @FTSL2014
 
O canivete suiço de Python
O canivete suiço de PythonO canivete suiço de Python
O canivete suiço de Python
 
Por que escolher Python?
Por que escolher Python?Por que escolher Python?
Por que escolher Python?
 
Canivete python
Canivete pythonCanivete python
Canivete python
 
Introdução à Programação Python e Tk
Introdução à Programação Python e TkIntrodução à Programação Python e Tk
Introdução à Programação Python e Tk
 
Python para iniciantes
Python para iniciantesPython para iniciantes
Python para iniciantes
 
Python, por onde começar - Semana Technológica UTFPR 2015.
Python, por onde começar - Semana Technológica UTFPR 2015.Python, por onde começar - Semana Technológica UTFPR 2015.
Python, por onde começar - Semana Technológica UTFPR 2015.
 
Trilha python
Trilha pythonTrilha python
Trilha python
 
Canivete suíço do Python
Canivete suíço do PythonCanivete suíço do Python
Canivete suíço do Python
 

Destaque

E dá para desenvolver webgames com Django?
E dá para desenvolver webgames com Django?E dá para desenvolver webgames com Django?
E dá para desenvolver webgames com Django?Guilherme Medeiros
 
XIX PUG-PE - Pygame game development
XIX PUG-PE - Pygame game developmentXIX PUG-PE - Pygame game development
XIX PUG-PE - Pygame game developmentmatheuscmpm
 
E o que danado é o PUG-PE?
E o que danado é o PUG-PE?E o que danado é o PUG-PE?
E o que danado é o PUG-PE?pugpe
 
[2012] XIX PUGPE - Projeto Amadeus
[2012] XIX PUGPE -  Projeto Amadeus[2012] XIX PUGPE -  Projeto Amadeus
[2012] XIX PUGPE - Projeto AmadeusThiago
 
Lp script pug-pe
Lp script pug-peLp script pug-pe
Lp script pug-pehugoesb
 
Palestra Institucional PUG-PE
Palestra Institucional PUG-PEPalestra Institucional PUG-PE
Palestra Institucional PUG-PEMarcel Caraciolo
 
Programación en Pl/Python
Programación en Pl/PythonProgramación en Pl/Python
Programación en Pl/PythonEQ SOFT EIRL
 
Mi lenguaje de preferencia
Mi lenguaje de preferenciaMi lenguaje de preferencia
Mi lenguaje de preferenciaAlexanderMBaez
 
Python 3.x - Ihh.. E agora ? Como faço ?
Python 3.x - Ihh.. E agora ? Como faço ?Python 3.x - Ihh.. E agora ? Como faço ?
Python 3.x - Ihh.. E agora ? Como faço ?Marcel Caraciolo
 
Crab - A Python Framework for Building Recommendation Systems
Crab - A Python Framework for Building Recommendation SystemsCrab - A Python Framework for Building Recommendation Systems
Crab - A Python Framework for Building Recommendation SystemsMarcel Caraciolo
 
PyFoursquare: Python Library for Foursquare
PyFoursquare: Python Library for FoursquarePyFoursquare: Python Library for Foursquare
PyFoursquare: Python Library for FoursquareMarcel Caraciolo
 
Computação Científica com Python, Numpy e Scipy
Computação Científica com Python, Numpy e ScipyComputação Científica com Python, Numpy e Scipy
Computação Científica com Python, Numpy e ScipyMarcel Caraciolo
 
Suporte a macros na sua aplicação com PowerShell
Suporte a macros na sua aplicação com PowerShellSuporte a macros na sua aplicação com PowerShell
Suporte a macros na sua aplicação com PowerShellIgor Abade
 
Acelere - e melhore! - o feedback com testes automatizados rápidos
Acelere - e melhore! - o feedback com testes automatizados rápidosAcelere - e melhore! - o feedback com testes automatizados rápidos
Acelere - e melhore! - o feedback com testes automatizados rápidosIgor Abade
 
Tdd not sure if testing or developing
Tdd  not sure if testing or developingTdd  not sure if testing or developing
Tdd not sure if testing or developingRenato Oliveira
 
TDC2016SP - Luiza Labs - Migrando .NET p/ Python
TDC2016SP - Luiza Labs - Migrando .NET p/ PythonTDC2016SP - Luiza Labs - Migrando .NET p/ Python
TDC2016SP - Luiza Labs - Migrando .NET p/ Pythontdc-globalcode
 
TDC2016SP - Flask para Web
TDC2016SP - Flask para WebTDC2016SP - Flask para Web
TDC2016SP - Flask para Webtdc-globalcode
 

Destaque (20)

Comandos em python
Comandos em pythonComandos em python
Comandos em python
 
E dá para desenvolver webgames com Django?
E dá para desenvolver webgames com Django?E dá para desenvolver webgames com Django?
E dá para desenvolver webgames com Django?
 
XIX PUG-PE - Pygame game development
XIX PUG-PE - Pygame game developmentXIX PUG-PE - Pygame game development
XIX PUG-PE - Pygame game development
 
E o que danado é o PUG-PE?
E o que danado é o PUG-PE?E o que danado é o PUG-PE?
E o que danado é o PUG-PE?
 
[2012] XIX PUGPE - Projeto Amadeus
[2012] XIX PUGPE -  Projeto Amadeus[2012] XIX PUGPE -  Projeto Amadeus
[2012] XIX PUGPE - Projeto Amadeus
 
Lp script pug-pe
Lp script pug-peLp script pug-pe
Lp script pug-pe
 
Palestra Institucional PUG-PE
Palestra Institucional PUG-PEPalestra Institucional PUG-PE
Palestra Institucional PUG-PE
 
Programación en Pl/Python
Programación en Pl/PythonProgramación en Pl/Python
Programación en Pl/Python
 
Mi lenguaje de preferencia
Mi lenguaje de preferenciaMi lenguaje de preferencia
Mi lenguaje de preferencia
 
Python 3.x - Ihh.. E agora ? Como faço ?
Python 3.x - Ihh.. E agora ? Como faço ?Python 3.x - Ihh.. E agora ? Como faço ?
Python 3.x - Ihh.. E agora ? Como faço ?
 
Crab - A Python Framework for Building Recommendation Systems
Crab - A Python Framework for Building Recommendation SystemsCrab - A Python Framework for Building Recommendation Systems
Crab - A Python Framework for Building Recommendation Systems
 
PyFoursquare: Python Library for Foursquare
PyFoursquare: Python Library for FoursquarePyFoursquare: Python Library for Foursquare
PyFoursquare: Python Library for Foursquare
 
Computação Científica com Python, Numpy e Scipy
Computação Científica com Python, Numpy e ScipyComputação Científica com Python, Numpy e Scipy
Computação Científica com Python, Numpy e Scipy
 
Suporte a macros na sua aplicação com PowerShell
Suporte a macros na sua aplicação com PowerShellSuporte a macros na sua aplicação com PowerShell
Suporte a macros na sua aplicação com PowerShell
 
Acelere - e melhore! - o feedback com testes automatizados rápidos
Acelere - e melhore! - o feedback com testes automatizados rápidosAcelere - e melhore! - o feedback com testes automatizados rápidos
Acelere - e melhore! - o feedback com testes automatizados rápidos
 
Com vocês, Django!
Com vocês, Django!Com vocês, Django!
Com vocês, Django!
 
Tdd not sure if testing or developing
Tdd  not sure if testing or developingTdd  not sure if testing or developing
Tdd not sure if testing or developing
 
W2py pyconpe
W2py pyconpeW2py pyconpe
W2py pyconpe
 
TDC2016SP - Luiza Labs - Migrando .NET p/ Python
TDC2016SP - Luiza Labs - Migrando .NET p/ PythonTDC2016SP - Luiza Labs - Migrando .NET p/ Python
TDC2016SP - Luiza Labs - Migrando .NET p/ Python
 
TDC2016SP - Flask para Web
TDC2016SP - Flask para WebTDC2016SP - Flask para Web
TDC2016SP - Flask para Web
 

Semelhante a Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Raspberry PI - Jornadas Informática 2014
Raspberry PI - Jornadas Informática 2014Raspberry PI - Jornadas Informática 2014
Raspberry PI - Jornadas Informática 2014Pedro Pinto
 
Curso Começando com o Raspberry Pi - Aula 02
Curso Começando com o Raspberry Pi - Aula 02Curso Começando com o Raspberry Pi - Aula 02
Curso Começando com o Raspberry Pi - Aula 02Eronides Da Silva Neto
 
Oficina Mergulhando no Plone 4
Oficina Mergulhando no Plone 4Oficina Mergulhando no Plone 4
Oficina Mergulhando no Plone 4Tania Andrea
 
The zen of python 2010
The zen of python 2010The zen of python 2010
The zen of python 2010Luiz Aldabalde
 
Ambiente de desenvolvimento em Python - PUG-MA
Ambiente de desenvolvimento em Python - PUG-MAAmbiente de desenvolvimento em Python - PUG-MA
Ambiente de desenvolvimento em Python - PUG-MALucas Souto
 
TDC2016POA | Trilha Python - Python Assíncrono: tudo ao mesmo tempo agora
TDC2016POA | Trilha Python - Python Assíncrono: tudo ao mesmo tempo agoraTDC2016POA | Trilha Python - Python Assíncrono: tudo ao mesmo tempo agora
TDC2016POA | Trilha Python - Python Assíncrono: tudo ao mesmo tempo agoratdc-globalcode
 
Flisol 2014 - Python, por onde começar?
Flisol 2014 - Python, por onde começar?Flisol 2014 - Python, por onde começar?
Flisol 2014 - Python, por onde começar?Ramiro Luz
 
Vamos aprender algo diferente? Introdução à linguagem Python (aula 1)
Vamos aprender algo diferente? Introdução à linguagem Python (aula 1)Vamos aprender algo diferente? Introdução à linguagem Python (aula 1)
Vamos aprender algo diferente? Introdução à linguagem Python (aula 1)Sidney Roberto
 
Python - o que, porque, como e quando
Python - o que, porque, como e quandoPython - o que, porque, como e quando
Python - o que, porque, como e quandoGustavo Carvalho
 
Python Pythononcampus Uva 060609
Python Pythononcampus Uva 060609Python Pythononcampus Uva 060609
Python Pythononcampus Uva 060609gsroma
 
O poder do Python/Django
O poder do Python/DjangoO poder do Python/Django
O poder do Python/DjangoÁtila Bezerra
 
Poetry.pdf
Poetry.pdfPoetry.pdf
Poetry.pdfPyCaxias
 
20220707_AtoM_in_VINCULUM_RicardoPinho
20220707_AtoM_in_VINCULUM_RicardoPinho20220707_AtoM_in_VINCULUM_RicardoPinho
20220707_AtoM_in_VINCULUM_RicardoPinhoRicardo Pinho
 
O que podemos fazer com Python?
O que podemos fazer com Python?O que podemos fazer com Python?
O que podemos fazer com Python?Izabela Guerreiro
 
A Qualidade do Ecossistema Python - e o que podemos fazer para mante-la
A Qualidade do Ecossistema Python - e o que podemos fazer para mante-laA Qualidade do Ecossistema Python - e o que podemos fazer para mante-la
A Qualidade do Ecossistema Python - e o que podemos fazer para mante-laBruno Rocha
 

Semelhante a Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE (20)

Raspberry Pi: o hardware para Python
Raspberry Pi: o hardware para PythonRaspberry Pi: o hardware para Python
Raspberry Pi: o hardware para Python
 
Python e suas aplicações
Python e suas aplicaçõesPython e suas aplicações
Python e suas aplicações
 
Raspberry PI - Jornadas Informática 2014
Raspberry PI - Jornadas Informática 2014Raspberry PI - Jornadas Informática 2014
Raspberry PI - Jornadas Informática 2014
 
Curso Começando com o Raspberry Pi - Aula 02
Curso Começando com o Raspberry Pi - Aula 02Curso Começando com o Raspberry Pi - Aula 02
Curso Começando com o Raspberry Pi - Aula 02
 
Oficina Mergulhando no Plone 4
Oficina Mergulhando no Plone 4Oficina Mergulhando no Plone 4
Oficina Mergulhando no Plone 4
 
The zen of python 2010
The zen of python 2010The zen of python 2010
The zen of python 2010
 
Python Zope Plone - Ftec
Python Zope Plone - FtecPython Zope Plone - Ftec
Python Zope Plone - Ftec
 
Ambiente de desenvolvimento em Python - PUG-MA
Ambiente de desenvolvimento em Python - PUG-MAAmbiente de desenvolvimento em Python - PUG-MA
Ambiente de desenvolvimento em Python - PUG-MA
 
TDC2016POA | Trilha Python - Python Assíncrono: tudo ao mesmo tempo agora
TDC2016POA | Trilha Python - Python Assíncrono: tudo ao mesmo tempo agoraTDC2016POA | Trilha Python - Python Assíncrono: tudo ao mesmo tempo agora
TDC2016POA | Trilha Python - Python Assíncrono: tudo ao mesmo tempo agora
 
Flisol 2014 - Python, por onde começar?
Flisol 2014 - Python, por onde começar?Flisol 2014 - Python, por onde começar?
Flisol 2014 - Python, por onde começar?
 
Python-Fenalivre-Imed
Python-Fenalivre-ImedPython-Fenalivre-Imed
Python-Fenalivre-Imed
 
Vamos aprender algo diferente? Introdução à linguagem Python (aula 1)
Vamos aprender algo diferente? Introdução à linguagem Python (aula 1)Vamos aprender algo diferente? Introdução à linguagem Python (aula 1)
Vamos aprender algo diferente? Introdução à linguagem Python (aula 1)
 
Python - o que, porque, como e quando
Python - o que, porque, como e quandoPython - o que, porque, como e quando
Python - o que, porque, como e quando
 
Python Pythononcampus Uva 060609
Python Pythononcampus Uva 060609Python Pythononcampus Uva 060609
Python Pythononcampus Uva 060609
 
O poder do Python/Django
O poder do Python/DjangoO poder do Python/Django
O poder do Python/Django
 
Poetry.pdf
Poetry.pdfPoetry.pdf
Poetry.pdf
 
20220707_AtoM_in_VINCULUM_RicardoPinho
20220707_AtoM_in_VINCULUM_RicardoPinho20220707_AtoM_in_VINCULUM_RicardoPinho
20220707_AtoM_in_VINCULUM_RicardoPinho
 
O que podemos fazer com Python?
O que podemos fazer com Python?O que podemos fazer com Python?
O que podemos fazer com Python?
 
Python Zope Plone - Tchelinux
Python Zope Plone - TchelinuxPython Zope Plone - Tchelinux
Python Zope Plone - Tchelinux
 
A Qualidade do Ecossistema Python - e o que podemos fazer para mante-la
A Qualidade do Ecossistema Python - e o que podemos fazer para mante-laA Qualidade do Ecossistema Python - e o que podemos fazer para mante-la
A Qualidade do Ecossistema Python - e o que podemos fazer para mante-la
 

Mais de Marcel Caraciolo

Como interpretar seu próprio genoma com Python
Como interpretar seu próprio genoma com PythonComo interpretar seu próprio genoma com Python
Como interpretar seu próprio genoma com PythonMarcel Caraciolo
 
Joblib: Lightweight pipelining for parallel jobs (v2)
Joblib:  Lightweight pipelining for parallel jobs (v2)Joblib:  Lightweight pipelining for parallel jobs (v2)
Joblib: Lightweight pipelining for parallel jobs (v2)Marcel Caraciolo
 
Construindo softwares de bioinformática para análises clínicas : Desafios e...
Construindo softwares  de bioinformática  para análises clínicas : Desafios e...Construindo softwares  de bioinformática  para análises clínicas : Desafios e...
Construindo softwares de bioinformática para análises clínicas : Desafios e...Marcel Caraciolo
 
Como Python ajudou a automatizar o nosso laboratório v.2
Como Python ajudou a automatizar o nosso laboratório v.2Como Python ajudou a automatizar o nosso laboratório v.2
Como Python ajudou a automatizar o nosso laboratório v.2Marcel Caraciolo
 
Como Python pode ajudar na automação do seu laboratório
Como Python pode ajudar na automação do  seu laboratórioComo Python pode ajudar na automação do  seu laboratório
Como Python pode ajudar na automação do seu laboratórioMarcel Caraciolo
 
Python on Science ? Yes, We can.
Python on Science ?   Yes, We can.Python on Science ?   Yes, We can.
Python on Science ? Yes, We can.Marcel Caraciolo
 
Oficina Python: Hackeando a Web com Python 3
Oficina Python: Hackeando a Web com Python 3Oficina Python: Hackeando a Web com Python 3
Oficina Python: Hackeando a Web com Python 3Marcel Caraciolo
 
Recommender Systems with Ruby (adding machine learning, statistics, etc)
Recommender Systems with Ruby (adding machine learning, statistics, etc)Recommender Systems with Ruby (adding machine learning, statistics, etc)
Recommender Systems with Ruby (adding machine learning, statistics, etc)Marcel Caraciolo
 
Opensource - Como começar e dá dinheiro ?
Opensource - Como começar e dá dinheiro ?Opensource - Como começar e dá dinheiro ?
Opensource - Como começar e dá dinheiro ?Marcel Caraciolo
 
Benchy, python framework for performance benchmarking of Python Scripts
Benchy, python framework for performance benchmarking  of Python ScriptsBenchy, python framework for performance benchmarking  of Python Scripts
Benchy, python framework for performance benchmarking of Python ScriptsMarcel Caraciolo
 
Python e 10 motivos por que devo conhece-la ?
Python e 10 motivos por que devo conhece-la ?Python e 10 motivos por que devo conhece-la ?
Python e 10 motivos por que devo conhece-la ?Marcel Caraciolo
 
GeoMapper, Python Script for Visualizing Data on Social Networks with Geo-loc...
GeoMapper, Python Script for Visualizing Data on Social Networks with Geo-loc...GeoMapper, Python Script for Visualizing Data on Social Networks with Geo-loc...
GeoMapper, Python Script for Visualizing Data on Social Networks with Geo-loc...Marcel Caraciolo
 
Benchy: Lightweight framework for Performance Benchmarks
Benchy: Lightweight framework for Performance Benchmarks Benchy: Lightweight framework for Performance Benchmarks
Benchy: Lightweight framework for Performance Benchmarks Marcel Caraciolo
 
Construindo Sistemas de Recomendação com Python
Construindo Sistemas de Recomendação com PythonConstruindo Sistemas de Recomendação com Python
Construindo Sistemas de Recomendação com PythonMarcel Caraciolo
 
Python, A pílula Azul da programação
Python, A pílula Azul da programaçãoPython, A pílula Azul da programação
Python, A pílula Azul da programaçãoMarcel Caraciolo
 
Construindo Soluções Científicas com Big Data & MapReduce
Construindo Soluções Científicas com Big Data & MapReduceConstruindo Soluções Científicas com Big Data & MapReduce
Construindo Soluções Científicas com Big Data & MapReduceMarcel Caraciolo
 
Novas Tendências para a Educação a Distância: Como reinventar a educação ?
Novas Tendências para a Educação a Distância: Como reinventar a educação ?Novas Tendências para a Educação a Distância: Como reinventar a educação ?
Novas Tendências para a Educação a Distância: Como reinventar a educação ?Marcel Caraciolo
 
Aula WebCrawlers com Regex - PyCursos
Aula WebCrawlers com Regex - PyCursosAula WebCrawlers com Regex - PyCursos
Aula WebCrawlers com Regex - PyCursosMarcel Caraciolo
 
Arquivos Zip com Python - Aula PyCursos
Arquivos Zip com Python - Aula PyCursosArquivos Zip com Python - Aula PyCursos
Arquivos Zip com Python - Aula PyCursosMarcel Caraciolo
 

Mais de Marcel Caraciolo (20)

Como interpretar seu próprio genoma com Python
Como interpretar seu próprio genoma com PythonComo interpretar seu próprio genoma com Python
Como interpretar seu próprio genoma com Python
 
Joblib: Lightweight pipelining for parallel jobs (v2)
Joblib:  Lightweight pipelining for parallel jobs (v2)Joblib:  Lightweight pipelining for parallel jobs (v2)
Joblib: Lightweight pipelining for parallel jobs (v2)
 
Construindo softwares de bioinformática para análises clínicas : Desafios e...
Construindo softwares  de bioinformática  para análises clínicas : Desafios e...Construindo softwares  de bioinformática  para análises clínicas : Desafios e...
Construindo softwares de bioinformática para análises clínicas : Desafios e...
 
Como Python ajudou a automatizar o nosso laboratório v.2
Como Python ajudou a automatizar o nosso laboratório v.2Como Python ajudou a automatizar o nosso laboratório v.2
Como Python ajudou a automatizar o nosso laboratório v.2
 
Como Python pode ajudar na automação do seu laboratório
Como Python pode ajudar na automação do  seu laboratórioComo Python pode ajudar na automação do  seu laboratório
Como Python pode ajudar na automação do seu laboratório
 
Python on Science ? Yes, We can.
Python on Science ?   Yes, We can.Python on Science ?   Yes, We can.
Python on Science ? Yes, We can.
 
Oficina Python: Hackeando a Web com Python 3
Oficina Python: Hackeando a Web com Python 3Oficina Python: Hackeando a Web com Python 3
Oficina Python: Hackeando a Web com Python 3
 
Recommender Systems with Ruby (adding machine learning, statistics, etc)
Recommender Systems with Ruby (adding machine learning, statistics, etc)Recommender Systems with Ruby (adding machine learning, statistics, etc)
Recommender Systems with Ruby (adding machine learning, statistics, etc)
 
Opensource - Como começar e dá dinheiro ?
Opensource - Como começar e dá dinheiro ?Opensource - Como começar e dá dinheiro ?
Opensource - Como começar e dá dinheiro ?
 
Big Data com Python
Big Data com PythonBig Data com Python
Big Data com Python
 
Benchy, python framework for performance benchmarking of Python Scripts
Benchy, python framework for performance benchmarking  of Python ScriptsBenchy, python framework for performance benchmarking  of Python Scripts
Benchy, python framework for performance benchmarking of Python Scripts
 
Python e 10 motivos por que devo conhece-la ?
Python e 10 motivos por que devo conhece-la ?Python e 10 motivos por que devo conhece-la ?
Python e 10 motivos por que devo conhece-la ?
 
GeoMapper, Python Script for Visualizing Data on Social Networks with Geo-loc...
GeoMapper, Python Script for Visualizing Data on Social Networks with Geo-loc...GeoMapper, Python Script for Visualizing Data on Social Networks with Geo-loc...
GeoMapper, Python Script for Visualizing Data on Social Networks with Geo-loc...
 
Benchy: Lightweight framework for Performance Benchmarks
Benchy: Lightweight framework for Performance Benchmarks Benchy: Lightweight framework for Performance Benchmarks
Benchy: Lightweight framework for Performance Benchmarks
 
Construindo Sistemas de Recomendação com Python
Construindo Sistemas de Recomendação com PythonConstruindo Sistemas de Recomendação com Python
Construindo Sistemas de Recomendação com Python
 
Python, A pílula Azul da programação
Python, A pílula Azul da programaçãoPython, A pílula Azul da programação
Python, A pílula Azul da programação
 
Construindo Soluções Científicas com Big Data & MapReduce
Construindo Soluções Científicas com Big Data & MapReduceConstruindo Soluções Científicas com Big Data & MapReduce
Construindo Soluções Científicas com Big Data & MapReduce
 
Novas Tendências para a Educação a Distância: Como reinventar a educação ?
Novas Tendências para a Educação a Distância: Como reinventar a educação ?Novas Tendências para a Educação a Distância: Como reinventar a educação ?
Novas Tendências para a Educação a Distância: Como reinventar a educação ?
 
Aula WebCrawlers com Regex - PyCursos
Aula WebCrawlers com Regex - PyCursosAula WebCrawlers com Regex - PyCursos
Aula WebCrawlers com Regex - PyCursos
 
Arquivos Zip com Python - Aula PyCursos
Arquivos Zip com Python - Aula PyCursosArquivos Zip com Python - Aula PyCursos
Arquivos Zip com Python - Aula PyCursos
 

Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

  • 1. Hello, I am Python! Marcel Caraciolo Mini-Curso De Introdução a Python II Workshop de Software Livre - CIN/UFPE - Recife - PE 1 1
  • 2. Quem é o instrutor ? • Marcel Pinheiro Caraciolo - @marcelcaraciolo • Sergipano, porém Recifense. • Diretor de Pesquisa e Desenvolvimento da Orygens • Mestrando em Ciência da Computação no CIN/UFPE na área de mineração de dados • Membro e Moderador da Celúla de Usuários Python de Pernambuco (PUG-PE) • Minhas áreas de interesse: Computação móvel e Computação inteligente • Meus blogs: http://www.mobideia.com (sobre Mobilidade desde 2006) http://aimotion.blogspot.com (sobre I.A. desde 2009) Jovem Aprendiz ainda nas artes pythonicas.... (desde 2007) II Workshop de Software Livre - CIN/UFPE - Recife - PE 2 2
  • 3. !"#$ O que é Python ? Por que Python? II Workshop de Software Livre - CIN/UFPE - Recife - PE 3 3
  • 4. !"#$ Por que Python É fácil II Workshop de Software Livre - CIN/UFPE - Recife - PE 4 4
  • 5. !"#$ Por que é fácil • Semelhança com pseudo-código. II Workshop de Software Livre - CIN/UFPE - Recife - PE 5 5
  • 6. Hello World Classíco ... ‘hello world’ - Python vs { Java, C, PHP e Pascal } II Workshop de Software Livre - CIN/UFPE - Recife - PE 6
  • 7. Hello World Classíco .... Em Python .... print “Hello World” II Workshop de Software Livre - CIN/UFPE - Recife - PE 7
  • 8. Por que Python É fácil É poderoso II Workshop de Software Livre - CIN/UFPE - Recife - PE 8 8
  • 9. Canivete suíço Tipagem dinâmica Biblioteca padrão completa Multi-paradigma Multi-plataforma Facilmente extensível Free Software (GPL) II Workshop de Software Livre - CIN/UFPE - Recife - PE 9
  • 10. Por que é poderoso • Python para Web • Web é presente -> Futuro! • Django (http://www.django.org) • Zope (http://www.zope.org) • Plone (http://www.plone.org) • Turbogears (http://www.turbogears.org) • Web2Py (http://www.web2py.com) II Workshop de Software Livre - CIN/UFPE - Recife - PE 10 10
  • 11. Web http://www.nationalgeographic.com/ II Workshop de Software Livre - CIN/UFPE - Recife - PE 11 11
  • 12. Web http://globo.com II Workshop de Software Livre - CIN/UFPE - Recife - PE 12 12
  • 13. Por que é poderoso • Python para gestão empresarial • PyGTK (http://www.pygtk.org) • PyQT (http://qt.nokia.com) • MySQL, PostgreSQL, Oracle, Sqlite II Workshop de Software Livre - CIN/UFPE - Recife - PE 13 13
  • 14. Aplicativos Desktop http://www.stoq.com.br/ http://taskcoach.org/ II Workshop de Software Livre - CIN/UFPE - Recife - PE 14
  • 15. Aplicativos Desktop Python + Qt + Qml II Workshop de Software Livre - CIN/UFPE - Recife - PE 15
  • 16. Python é multi-plataforma • Python em dispositivos móveis • Python for Symbian (PyS60), PySide (Maemo), ASE (Android) II Workshop de Software Livre - CIN/UFPE - Recife - PE 16
  • 17. Android (ASE) http://code.google.com/p/android-scripting/ II Workshop de Software Livre - CIN/UFPE - Recife - PE 17 17
  • 18. Por que é poderoso NetworkX http://pypi.python.org/pypi II Workshop de Software Livre - CIN/UFPE - Recife - PE 18
  • 19. Python é multi-plataforma • PyMT • Python Multi Touch • Especialmente criado para ambientes multi-touch http://pymt.eu/ II Workshop de Software Livre - CIN/UFPE - Recife - PE 19
  • 20. PyGame e Jogos http://www.pygame.org/news.html II Workshop de Software Livre - CIN/UFPE - Recife - PE 20
  • 21. Aplicativos Desktop http://www.blender.org/ II Workshop de Software Livre - CIN/UFPE - Recife - PE 21
  • 22. Quem usa Python? II Workshop de Software Livre - CIN/UFPE - Recife - PE 22 22
  • 23. ... e aqui no Brasil também! II Workshop de Software Livre - CIN/UFPE - Recife - PE 23
  • 24. Python entre as 10 + ! http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html II Workshop de Software Livre - CIN/UFPE - Recife - PE 24
  • 25. O que é python ? É fácil É poderoso II Workshop de Software Livre - CIN/UFPE - Recife - PE 25
  • 26. O que é python ? É fácil É poderoso É divertido II Workshop de Software Livre - CIN/UFPE - Recife - PE 25
  • 28. Hun, sei o que é Python! ...E agora como eu começo ? II Workshop de Software Livre - CIN/UFPE - Recife - PE 27
  • 29. Instaladores • Interpretador Python disponível para diversas plataformas. • Windows, Unix, Linux, etc. • Para usuários Windows, é necessário o download do SDK! • http://www.python.org/download/ II Workshop de Software Livre - CIN/UFPE - Recife - PE 28 28
  • 30. Instaladores • Atualmente Python está na versão 2.7.1 / 3.2 • No Python 3.0 houve mudanças críticas! 2.7.x suaviliza a transição para os desenvolvedores (Muitos frameworks ainda escritos para Python 2.x) II Workshop de Software Livre - CIN/UFPE - Recife - PE 29 29
  • 31. Instaladores (Windows) II Workshop de Software Livre - CIN/UFPE - Recife - PE 30 30
  • 32. Instaladores (Windows) • Não esqueça de adicionar o caminho da instalação no PATH do sistema! • ;C:Python2x Windows 7 • >>> 2 + 3 Approved! • >>> 5 II Workshop de Software Livre - CIN/UFPE - Recife - PE 31 31
  • 33. Instaladores • E enquanto no Linux e Unix ? • Estas distribuições já disponibilizam para você de forma nativa! • Prompt do python “>>>”: • Para sair: • No Unix, digite CONTROL-D • No Windows, digite CONTROL-Z + ENTER II Workshop de Software Livre - CIN/UFPE - Recife - PE 32 32
  • 34. Vamos executar! ...E agora como eu crio meu programa em python ? II Workshop de Software Livre - CIN/UFPE - Recife - PE 33 33
  • 35. Rodando Programas no Unix • Os arquivos python tem finalização .py! %python filename.py • Você pode usar qualquer editor de texto para codificar o seu código! • No Windows : Clássico Notepad ou o IDLE... • No Mac OS/Linux: VI, TextEdit, GEdit, TextMate ... Para tornar o arquivo *.py executável: #!/usr/bin/python Para aceitar textos com acentos e caracteres especiais: # -*- coding: utf-8 -*- II Workshop de Software Livre - CIN/UFPE - Recife - PE 34 34
  • 36. Ambiente IDLE • Ambiente Shell de desenvolvimento básico • Editor de texto com highlighting e identação automática para criação de arquivos python • Comandos para alterar propriedades e execução de programas II Workshop de Software Livre - CIN/UFPE - Recife - PE 35 35
  • 37. Desenvolvimento ... E ambientes de desenvolvimento para Python ? II Workshop de Software Livre - CIN/UFPE - Recife - PE 36 36
  • 38. Eclipse • Aptana PyDev • Plugin para desenvolvimento de aplicações Python para o Eclipse • Suporte para Debug, UnitTests. • http://pydev.org/ II Workshop de Software Livre - CIN/UFPE - Recife - PE 37 37
  • 39. Netbeans • Netbeans >= 6.5 • Plugin para desenvolvimento de aplicações Python para o Netbeans • Suporte para Debug, UnitTests, etc. • http://wiki.netbeans.org/PythonInstall II Workshop de Software Livre - CIN/UFPE - Recife - PE 38 38
  • 40. ActivePython • ActiveState Python • Distribuição Python completa, instale e execute! • Diversos plug-ins e suporte já ao Python 3.0 • http://www.activestate.com/activepython/ II Workshop de Software Livre - CIN/UFPE - Recife - PE 39 39
  • 41. EasyClipse • Distribuição customizada do Eclipse! • Distribuição pronta para uso, inclusive com o ambiente para Python! • Pydev já vem instalado ! • http://www.easyeclipse.org/ II Workshop de Software Livre - CIN/UFPE - Recife - PE 40 40
  • 42. PyCharm • IDE em Python customizada com suporte incluso ao Django • Excelente IDE para desenvolvimento WEB • 30 dias gratuito • http://www.jetbrains.com/pycharm/ II Workshop de Software Livre - CIN/UFPE - Recife - PE 41 41
  • 43. Outros Editores Notepad++, GEdit, VIM, Emacs, IDLE, Eric IDE, TextMate, etc. Vários editores ao seu dispor compatíveis com Python! II Workshop de Software Livre - CIN/UFPE - Recife - PE 42 42
  • 44. Seu shell incrementado... • IPython (Disponível para Linux, Mac, Windows) • http://ipython.scipy.org/ • BPython (Disponível para Linux e Mac OS) • http://bpython-interpreter.org/ • Incrementam o shell do seu interpretador Python com auto-complete, highlighting, etc. II Workshop de Software Livre - CIN/UFPE - Recife - PE 43 43
  • 45. Chega de conversa... • É hora de por a mão na massa! II Workshop de Software Livre - CIN/UFPE - Recife - PE 44 44
  • 46. Por onde começo ? ... Criando nosso primeiro Hello World ! II Workshop de Software Livre - CIN/UFPE - Recife - PE 45 45
  • 47. ... em Python ... print “Hello World” Exemplos1.py II Workshop de Software Livre - CIN/UFPE - Recife - PE 46 46
  • 48. Tipos e operações Vamos ver um trecho de código em Python! II Workshop de Software Livre - CIN/UFPE - Recife - PE 47 47
  • 49. Código Base II Workshop de Software Livre - CIN/UFPE - Recife - PE 48 48
  • 50. ... entendendo o código... • Atribuição utiliza = e comparação utiliza == II Workshop de Software Livre - CIN/UFPE - Recife - PE 49 49
  • 51. ... entendendo o código... • Atribuição utiliza = e comparação utiliza == II Workshop de Software Livre - CIN/UFPE - Recife - PE 50 50
  • 52. ... entendendo o código... • Números: + - * / % tem suas funções características • + pode ser usado como concatenação de Strings; • % pode ser usado para formatar Strings (assim como em C). II Workshop de Software Livre - CIN/UFPE - Recife - PE 51 51
  • 53. ... entendendo o código... • Números: + - * / % tem suas funções características • + pode ser usado como concatenação de Strings; • % pode ser usado para formatar Strings (assim como em C). II Workshop de Software Livre - CIN/UFPE - Recife - PE 52 52
  • 54. ... entendendo o código... • Operadores lógicos são palavras e não símbolos (||, &&) • and, or, not II Workshop de Software Livre - CIN/UFPE - Recife - PE 53 53
  • 55. ... entendendo o código... • Operadores lógicos são palavras e não símbolos (||, &&) • and, or, not II Workshop de Software Livre - CIN/UFPE - Recife - PE 54 54
  • 56. ... entendendo o código... • print é o comando básico para “impressão” na tela II Workshop de Software Livre - CIN/UFPE - Recife - PE 55 55
  • 57. ... entendendo o código... • print é o comando básico para “impressão” na tela II Workshop de Software Livre - CIN/UFPE - Recife - PE 56 56
  • 58. ... entendendo o código... • E se você quiser receber uma entrada diretamente do usuário ? • raw_input() - retorna uma string ! Exemplos1.py II Workshop de Software Livre - CIN/UFPE - Recife - PE 57 57
  • 59. ... entendendo o código... • A primeira atribuição em uma variável também é responsável por cria-lá. • Os tipos das variáveis não precisam ser informados; • Python descobre o tipo da variável por conta própria! II Workshop de Software Livre - CIN/UFPE - Recife - PE 58 58
  • 60. ... entendendo o código... • A primeira atribuição em uma variável também é responsável por cria-lá. • Os tipos das variáveis não precisam ser informados; • Python descobre o tipo da variável por conta própria! II Workshop de Software Livre - CIN/UFPE - Recife - PE 59 59
  • 61. ! !"#$%&'&'"()**+,- ... Usando o Shell ! .#/#'&01)/'2$3&/4#56)"'7&4&'481&%&"')'#1/2091&"'%)' 94'&0:)1&'0#"1#');)791#/'&'7&4#$%&'<%2/=>'?0">@'A9%&' )4'.B1(&$'8'&0:)1&C ! DDD%2/+<"1/2$E'%)'1)"1)=- ! F19%&'"&0/)'"1/2$E"CD ! DDD ! .#/#'G2"9#*2H#/'#'%&794)$1#5I&'%)'94'?0:)1&'0#"1#' );)791#/'&'7&4#$%&'<()*J= ! DDD()*J+KLLL- ! FM&794)$1#5I&'%&'&0:)1&'N$1)2/&D ! DDD II Workshop de Software Livre - CIN/UFPE - Recife - PE 60 60
  • 62. ! !"#$%&'&'"()**+,- ... Usando o Shell ! .#/#'/)0)12/'&'3&4#$%&'#$1)/2&/'0&%)5") ! !"#/'#'")1#'0#/#'324# ! 62721#/'89: ! .#/#'$#;)7#/')$1/)'&"'3&4#$%&'<=')>)3?1#%&"'@#"1#' ?"#/'#"'")1#"'0#/#'324#')'0#/#'@#2>& ! .#/#'&@1)/'#<?%#'7)/#*')>)3?1#5")'&'3&4#$%&'A()*0+-B ! .#/#'"#2/'%&'()*0'AC?21B ! .#/#'&@1)/'#'*2"1#'%&"'4D%?*&"' A4&%?*)"B ! .#/#'2$1)//&40)/'#*7?4'3&4#$%&'A31/*'E'FB II Workshop de Software Livre - CIN/UFPE - Recife - PE 61 61
  • 63. Whitespace • Importante para identação e novas linhas • Use para quando for para uma próxima linha prematuramente. • Em Python não há { } !! Isso é para definição de dicionários (dict) • Blocos de código definidos por identação! Exemplos1.py II Workshop de Software Livre - CIN/UFPE - Recife - PE 62 62
  • 64. Comentários • Comentários começam com # • Convenção: Você pode definir uma “documentação” em string como primeira linha de qualquer nova função que você definir. • Muito importante para o desenvolvedor, crítico para o usuário! II Workshop de Software Livre - CIN/UFPE - Recife - PE 63 63
  • 65. ! !"#"$%&#'(%)$"*+&*%),- Conhecendo a linguagem... ! .)/"0)$"0&/%&*%),"+" ! 12&0,3- ! 444"*5*67 ! 444"*5*8%&(%&9 ! 444 ! :-#%&0&/%&*%),"+";*/<-*&2)(%&*$"(%= ! >&*?@)(&#*0@+"#*-*%),-;*@(&*@0"* A@/B<- ! 12&0,3- ! 444"*5*C)/%D*6=7*E*1FFGHHH ! 444"*5*)/%C6=7D II Workshop de Software Livre - CIN/UFPE - Recife - PE 64 64
  • 66. ! !"#$%&%'(") Conhecendo a linguagem... ! *+,-.,))/0-1"#$%&%'+,-1"-20.,) ! 3%4% ! 052-%-6-78 ! 9:2;,5 ! %-6-7 ! *+,-.,))/0-#,<%51,)-1"#$%&%204,)-=>?@40,)AB ! 3%4% ! C$D,-5-6-5"E-C$D,=B8 ! 9:2;,5 ! 5-6-C$D,=B II Workshop de Software Livre - CIN/UFPE - Recife - PE 65 65
  • 67. Tipos Básicos • Inteiros (padrão para números) • Divisão entre inteiros, resposta um inteiro! • Inteiros Longos • L ou l no final. (Convertido automaticamente com precisão de inteiros > 32 bits) • Floats (ponto flutuante) • 1.23, 3.4e-10 • Complexas • >> 2 + 3j Exemplos1.py II Workshop de Software Livre - CIN/UFPE - Recife - PE 66 66
  • 68. Tipos Básicos • Representação numérica • Representação de dígitos com/sem formatação de string • Divisão clássica / base • Uso dos operadores // e / • Operações em nível de bit • 1 << 2 , 1| 2 , 1&2 • Notações hexadecimal / octal • 2 , 0x10 , 0100 , oct(64), hex(255) , int(‘200’), int(‘0100’,8) , int(‘0x40’,16) • Operações válidas: +, *, >> , ** , pow, abs, round, etc. Exemplos1.py II Workshop de Software Livre - CIN/UFPE - Recife - PE 67 67
  • 69. Tipos Básicos • Strings ! • “abc” ou ‘abc’ !"#$%&'&($)*"+",-.% "#$%&'& ()*&+,&$-(.(/01( /01 2.3$+&45. /061 ).3$+&$5&785"9 /:1 )"7$+&45. /:61 )"7$+&$5&785"9 !!!"#$%&!&'()*% /661 785"9&;$<=.>$&':+.?.+@3(7"A !"#$%&'()*$&+&)('#%,$-+.../ /B61 #7?.+.3>. /0:1 #7?.+.3>. /7%1 785"9#"#.&#.&$<=.>$% /7%&3$>1 #7?.+.3,"&#.&$<=.>$% Exemplo1.py !!!+,(-.#/&0&+1()2%3444/ '()*% II Workshop de Software Livre - CIN/UFPE - Recife - PE 68 68
  • 70. Comandos básicos ! !"#$%&'()$*"+),-$.*/0&/%($. • Alguns comandos básicos que podem ajudar no ínicio! • dir(element) - todos ! 1$"'()$*"#$%&' os atributos e métodos que estão associados a elemento. ! 20/3,&'*&,)$*4,/*/.&56/%*/"*#%5"/5%$* • 7-$3$*($*"+),-$ type(element) - Descobrir o tipo do objeto! • import - importe módulos para uso no seu código! ! 8$%('*65.96/-*$7:/&$.*/*./,.*%/.#/3&56$.* ";&$)$. !"#$%& !"#$%&# !"#$%& !"#$%&#'(&)# !"#$%& !"#$%&#'(&)#!'(!"(&) ) !"#$%&#!!"#$%& !* ) !"#$%&#!!"#$%& !(&)# ) !"#$%&#!!"#$%& !(&)#'+,-"!'(!(+, II Workshop de Software Livre - CIN/UFPE - Recife - PE 69 69
  • 71. Exercício 01 • Faça um programa que peça 2 números e um real. • Calcule e mostre: • O produto do dobro do primeiro com a metade do segundo • A soma do triplo do primeiro com o terceiro • O terceiro elevado ao cubo II Workshop de Software Livre - CIN/UFPE - Recife - PE 70 70
  • 72. Atribuição ... Vamos entender como funciona atribuição! II Workshop de Software Livre - CIN/UFPE - Recife - PE 71 71
  • 73. Atribuição • Atribuição de uma variável em Python significa criar um rótulo para armazenar uma referência para algum objeto. • Atribuição cria referências e não cópias! • Inferência do tipo da referência baseado no tipo de dado atribuído • A referência é deletada por meio de Garbage Collection • Quando o objeto deixa de ser referenciado por nenhum outro rótulo(variável). II Workshop de Software Livre - CIN/UFPE - Recife - PE 72 72
  • 74. Atribuição • Lembre-se que Python a tipagem é dinâmica! • Declarar variáveis sem atribuí-las irá levantar um erro! II Workshop de Software Livre - CIN/UFPE - Recife - PE 73 73
  • 75. Atribuição • Você pode inicializar várias variáveis de uma só vez! • x = y = z = 2.0 • Rótulos de variáveis são Case Sensitive e não podem iniciar com número. Números, letras e underscores são permitidos! • bob bob_2 _bob _2_bob bob_2 BoB • Não esquecer das palavras reservadas! II Workshop de Software Livre - CIN/UFPE - Recife - PE 74 74
  • 76. Atribuição • Entendendo manipulação de atribuição de referências • x = y não significa que você fez uma cópia de y! • x = y o que realmente faz é x referencia ao objeto que y referencia! • O que realmente acontece por trás dessa simples atribuição: II Workshop de Software Livre - CIN/UFPE - Recife - PE 75 75
  • 77. Atribuição • Mas e se fizermos isso ?! Qual será o valor de x ? >>> x = “casa” >>> y = x >>> x = “fazenda” >>> print x II Workshop de Software Livre - CIN/UFPE - Recife - PE 76 76
  • 78. Atribuição • Mas e se fizermos isso ?! Qual será o valor de x ? >>> x = “casa” >>> y = x >>> y = “fazenda” >>> print x • Do mesmo jeito que nós esperávamos! Dados nativos são imutáveis! (String, Inteiros, float, complexos). >>> x = “casa” #cria 3, x referencia ao objeto string “casa” >>> y = x # Cria variavel y, referencia ao objeto string “casa” >>> y = “fazenda” #Cria referencia ao objeto string “fazenda” >>> print x # Nenhum efeito em x, ainda referencia “casa” >>> casa II Workshop de Software Livre - CIN/UFPE - Recife - PE 77 77
  • 79. Listas, Strings e Tuplas ... O poder de python agora! II Workshop de Software Livre - CIN/UFPE - Recife - PE 78 78
  • 80. Listas, Strings e Tuplas • Todos os três são Sequências! • Podem ser indexados por algum valor ordinal posicional • Todas as operações apresentadas aqui nesta seção podem ser aplicadas em todos os tipos de sequência • Listas • li = [1,2,3, ‘abc’] • Tuplas • li = (23, ‘abc’, 4.56, (2,3), ‘def’) • Strings • st = “Hello World” st = ‘Hello World’ Exemplos2.py II Workshop de Software Livre - CIN/UFPE - Recife - PE 79 79
  • 81. Listas, Strings e Tuplas • Manipulando sequências! • Pelo índice a partir de 0 Ex: ti [0] • Índices podem ser positivos ou negativos! Ex: ti[1] (esq.) ti[-4] (dir.) • Fracionamento e matrizes! • li[1:3] L[1:] matrix = [[1,3,4] , [3,5,6] , [7,8,9]] • Operador in • retorna um booleano. Checa se um valor está em uma sequência! • 4 in li Exemplos2.py II Workshop de Software Livre - CIN/UFPE - Recife - PE 80 80
  • 82. ! Listas, Strings e Tuplas !"#$%#&'&%()##%*+,&"$)*# ! -*+"()&.,#"$"/,#&)&*)0%$"/,# !!!"#$#%&'(')'*'+,#!"#$%&'()*%)+$,-% !!!"%-, & !!!"%(, ) !!!"%.&, + !!!"%.), ) !!!"%&/, %(')'*'+, !!!"%/), %&'('), !!!"%&/*/(,#!%"#.,"$*()()/%,,(0)"(+.-%1,.)/2+%3*()*.)4).5)4 %('*, !!!"%//.&, %+'*')'('&,#!/%,,()3.6%-$7()$37.#-.)%),.8293"$% Exemplos2 II Workshop de Software Livre - CIN/UFPE - Recife - PE 81 81
  • 83. Operacões em Listas • Operador + , * • a = “Hello” + “ World” (concatenação) • [3] * 4 (repetição) • Operador len() e append() • len() - retorna um inteiro com o tamanho da sequência! • append() - adiciona um elemento ao final da lista! • Atribuição • list[0] = ‘3’ • Fazendo cópias de sequência , Cuidado!!! Exemplos2.py II Workshop de Software Livre - CIN/UFPE - Recife - PE 82 82
  • 84. Operacões em Listas • Qual será o valor de b ? >>> a = [1,2,3] >>> b = a >>> a.append(4) >>> print b II Workshop de Software Livre - CIN/UFPE - Recife - PE 83 83
  • 85. Operacões em Listas • Qual será o valor de b ? >>> a = [1,2,3] >>> b = a >>> a.append(4) >>> print b • Surpresa! >>> b = [1,2,3,4] • Dados do tipo listas, dicionarios e pré-definidos pelo usuário são mutáveis! II Workshop de Software Livre - CIN/UFPE - Recife - PE 84 84
  • 86. Operacões em Listas II Workshop de Software Livre - CIN/UFPE - Recife - PE 85 85
  • 87. Operacões em Listas • Para fazer cópias de listas • a = b[:] (2 cópias independentes) • a = b (os 2 referenciam o mesmo objeto) • Qual a diferença entre listas e tuplas ? • Listas são mutáveis e Tuplas imutáveis! • l = [1,‘abc’,4] t = (1,‘abc’,4,5) • Atribuição em listas e tuplas • list[0] = ‘3‘ ok! • t[0] = 3 NOK!!! (Deve-se criar uma nova tupla! - t = (3, ‘abc’,4,5) Exemplos2.py II Workshop de Software Livre - CIN/UFPE - Recife - PE 86 86
  • 88. Tuplas x Listas ! • Listas !"#$%& são mais lentas porém mais poderosas que tuplas • Listas podem ser modificadas e tem diversos operadores que podem ser utilizados ! '(%)*+%,-.)-/*0"%*&/%/$*&)%&1/+2,/",%/3*4-(-.5%/&")*$1/ • Tuplas são imutáveis e tem menos funcionalidades! &62/*,")78-*& ! /9&%:&-/%/4".562/)"#$-;</#%(%/)(%.&42(,%(/2")(2&/)*#2&/ • -,/)"#$%& converter entre listas e tuplas ? Para !!!"#$#%&'(')'*'+, !!!-./012"3 2&'(')'*'+3 !!!045-2-./012"33 %&'(')'*'+, !!!610/2-./013#!"#$%&%'#"()) Exemplos2.py II Workshop de Software Livre - CIN/UFPE - Recife - PE 87 87
  • 89. ! Exercício 02 !"#$%&%'()*+* ! ,(-.$#/0#)1-)-#23'4.#)5'-.1-6)7#$'8171-)7#9 ! :;6*6<6=6>6?6@6A6B6C6*;6**6*<6*=6*>6*?D ! E4.#$815()7#)*)1)C ! E4.#$815()7#)B)1)*= ! FG0#$(-)H1$#- ! FG0#$(-)&0H1$#- ! I(7(-)(-)0G5.'H5(-)7#)<6)=)#)> ! J'-.1)$#8#$-1 ! K1LM()#4.$#)1)-(01)7()'4.#$815()7#)*;)1)*?)H#5() '4.#$815()7#)=)1)C)#0)N5(1.O II Workshop de Software Livre - CIN/UFPE - Recife - PE 88 88
  • 90. Métodos muito usados • append(), insert(), extend(), del() • min(), max() • index(), count(), remove(), pop() • reverse() , sort() • etc. Exemplos2.py II Workshop de Software Livre - CIN/UFPE - Recife - PE 89 89
  • 91. Strings • Formatação e conversão de Strings • Usam os mesmos operadores básicos de lista • Multi-Strings, Strings com aspas simples e duplas • Caracteres Speciais e str() e unicode() Exemplos2.py II Workshop de Software Livre - CIN/UFPE - Recife - PE 90 90
  • 92. Strings • Também uma sequência e é Imutável! • “42” + 1 (erro!) Use “42” + str(1) • float(), int() -> string para numéro • Atribuição • S = ‘spam’ S[0] = ‘x’ ERRO!!! • Strings são imutáveis! • String -> Lista -> String (.join) • Formatação de string Exemplos2.py II Workshop de Software Livre - CIN/UFPE - Recife - PE 91 91
  • 93. Métodos mais usados • find(), replace(), join(), split() • isdigit(), islower(), strip(), • startswith(), upper(), lower() • etc. Exemplos2.py II Workshop de Software Livre - CIN/UFPE - Recife - PE 92 92
  • 94. Exercício 03 • Crie uma lista com o nome de 10 pessoas e sorteie uma pessoa, depois embaralhe novamente e sorteie outra (sem repetição) • Dica: help(random) - módulo para aleatoriedade. • Faça um programa que permita ao usuário digitar o nome e em seguida mostrar ao usuário de trás pra frente somente em letras maiúsculas. • Dica: Procure pela documentação do help(“”) ! II Workshop de Software Livre - CIN/UFPE - Recife - PE 93 93
  • 95. Dicionários Um “hash map” pythonico! II Workshop de Software Livre - CIN/UFPE - Recife - PE 94 94
  • 96. Dicionários • Estrutura de dados em forma de coleções onde os items são armazenados e buscados pela chave em vez do deslocamento posicional. • Chaves podem ser quaisquer objetos do tipo imutável • Valores podem ser de qualquer tipo • Um dicionário pode armazenar diferentes tipos de valores e é mutável! • Criando e modificando dicionários! • d = {“user” : “Marcel” , “password”: 2342} Exemplos3.py II Workshop de Software Livre - CIN/UFPE - Recife - PE 95 95
  • 97. Dicionários • Dicionários não são ordenados! • Uma nova chave pode aparecer em qualquerr lugar • Funciona como “hashing” • Algums métodos: • has_key(‘eggs’) , clear() , del d[‘key’] , keys(), values(), items(), get() , update() • copy() fazer cópias de dicionários ! (Lembre-se que dicionario é mutável!) Exemplos3.py II Workshop de Software Livre - CIN/UFPE - Recife - PE 96 96
  • 98. Arquivos Como é fácil manipular um arquivo! II Workshop de Software Livre - CIN/UFPE - Recife - PE 97 97
  • 99. Arquivos • Apenas uma linha para abrir um arquivo! • file = open(“data”, ‘r’) tipos: r, a, w • Alguns métodos para operações em arquivos: • file.read(), readline(), readlines(), • file.write(), writelines(), • file.close() Exemplos3.py II Workshop de Software Livre - CIN/UFPE - Recife - PE 98 98
  • 100. Booleanos Expressões lógicas II Workshop de Software Livre - CIN/UFPE - Recife - PE 99 99
  • 101. Expressões lógicas • True e False são constantes em Python • False : 0, None, [] , {} , 0.0 • True: Valores Numéricos exceto 0, objeto não vazios • Um dicionário pode armazenar diferentes tipos de valores e é mutável! • Operadores de comparação: ==, != , < , <=, etc. • X == Y ( efetua teste de equivalência de valor) • X is Y (Testa a identidade do objeto) Exemplos3.py II Workshop de Software Livre - CIN/UFPE - Recife - PE 100 100
  • 102. Expressões lógicas • None é similar ao NULL em linguagem C • L = [None] * 100 (declara uma lista de 100 items None ) • Operações com or e and • not -> inversão lógica (true -> false , false -> true) • and e or (&& e II) • isinstance(element,type) • Verifica se um elemento é do tipo type Exemplos3 II Workshop de Software Livre - CIN/UFPE - Recife - PE 101 101
  • 103. Exercício 03 II Workshop de Software Livre - CIN/UFPE - Recife - PE 102 102
  • 104. Exercício 04 II Workshop de Software Livre - CIN/UFPE - Recife - PE 103 103
  • 105. Instruções compostas If python == “cool”: print “Oh yeah!” II Workshop de Software Livre - CIN/UFPE - Recife - PE 104 104
  • 106. Fluxo de Controle • Várias expressões Python para controlar o fluxo do programa. Todos eles fazem uso de testes condicionais booleanos. • ifs, else • loops while, for II Workshop de Software Livre - CIN/UFPE - Recife - PE 105 105
  • 107. Instruções if Exemplos4 II Workshop de Software Livre - CIN/UFPE - Recife - PE 106 106
  • 108. Instruções while Exemplos4 II Workshop de Software Livre - CIN/UFPE - Recife - PE 107 107
  • 109. Instruções while • Você pode usar o comando break para sair do loop mais próximo que a envolve. • Você pode usar o comando continue para pular para o ínicio do loop mais próximo que a envolve e pular para a próxima iteração. • Você pode usar o comando pass quando você não quer que se faça nada (instrução vazia) • Você pode o o bloco else do loop para quando se quer executar um código quando se sai normalmente do loop (sem ser por comando break) Exemplos4.py II Workshop de Software Livre - CIN/UFPE - Recife - PE 108 108
  • 110. Instruções for • Loops for iteram sobre uma sequência de items (listas, tuplas, string ou quaisquer outros objetos cuja a linguagem considere como um “iterator”) • Várias maneiras de iterar sobre um conjunto de items! • Também possui o bloco else quando se sai normalmente do loop (similar ao while) • Função muito usada nos loops for: range() • range() - Retorna uma lista de números que varia de 0 a ao número passado como parâmetro. Exemplos4.py II Workshop de Software Livre - CIN/UFPE - Recife - PE 109 109
  • 111. Instruções for II Workshop de Software Livre - CIN/UFPE - Recife - PE 110 110
  • 112. Instrução zip • A função range() percorre sequências de maneira exaustiva. A função interna zip permite usar loops for para visitar várias sequências em paralelo. • zip() é bastante poderoso, pode unir sequências onde retorna ! uma lista de tuplas que se distribuem em pares os items paralelos extraídos dessas sequências. • Permite também facilitar a construção de dícionarios! ! • x = dict(zip(kes,vals)) ! ! ! ! ! ! Exemplos4.py ! II Workshop de Software Livre - CIN/UFPE - Recife - PE 111 111
  • 113. Compreensão de listas [i for i in “python é fácil demais”] II Workshop de Software Livre - CIN/UFPE - Recife - PE 112 112
  • 114. Compreensão de listas ! !"#$%&&'()"*+&*,-(./( linguagem Python • Funcionalidade muito poderosa da • 01.2"'*(3$"%./*4"#$%&(()"*+&*,-(./(5*4%-/*,-(./(*+&*6"%#/* da lista original. Gera uma lista nova aplicando uma função para cada elemento • 674-,*&*%7$-+/8*9*3("*+&*4"#$%&(()"*+&*,-(./(*:*;&#* de código!) ! Muito usado por programadores Python! (Economia 4"#3#*&#*#/.&#7.-4/8 • A !sintaxe da compreensão de lista usa-se de palavra-chaves: 0"%*&<&#$," ! =*>*?<@*A*<*-'*?B*888*CDD • [expression for name in list] ! E*>*?<*F*<*-'*=*/'+*<*&G&'D ! H#*$1.2"'*.&#"( ! III(*>*J<KKL*6"%*<*-'*%/'M&NOBPQ ! III#*>*J<*6"%*<*-'*(*-6*<RL*>>*BQ Exemplos4.py II Workshop de Software Livre - CIN/UFPE - Recife - PE 113 113
  • 115. Compreensão de listas • Permite também o uso de filtros (deteminam se uma determina expressão deve ser executada sobre um membro da ! lista) !"#$%&&'()"*+&*,-(./(012 ! • [expression for name in list if filter ] 3.-,-4/%*+-5-"'6%-"(7*&8&#$,"9 ! :::+;<=>",?=9@AAAA7=5&,./=9BCAAA7=D-,E8=9FGAAA7 =?E(5/=91AAAH ! :::$"((-I-,-+/+&(J%-5"*;*K5/%*?"%*5/%*-'*+*-?*+K5/%L* M*NAAAAL ! :::$"((-I-,-+/+&(J$"I%&*;*K5/%*?"%*5/%*-'*+*-?* +K5/%L*M*1AAL Exemplos4.py ! O#*(.%-'>( II Workshop de Software Livre - CIN/UFPE - Recife - PE ! :::*'"#&*;*=P'P'*QQ*OQP'QQ(Q.QP'P'QP'/* 114 ?Q%P'P'/QQQ(P'&*P.-QQ'RQQ/Q*Q(QQEP'QSP'&QQP 'P'Q-P'%QQ/QT***P'QQ*P'P'P'P'= 114
  • 116. Exercício 05 • Faça ! um programa que imprima na tela apenas os números ímpares entre 1 e 50 (usando compreensão de !"#$%&%'()*+* listas!) ! ,#-.()/01)2'341)5#)-(0#3)5#)%2133#3)(3)6/1'3)#347() #3%$'4(3)-()#34'2()/-5#$2'-#)89-(0#:(/4$(:-(0#;<)#) 1=($1)0/5(/>3#)()?15$7()?1$1)@10#2@13#+)A#5#>3#)/0) 2'341)%(0)(3)-(0#3)4(5(3)#0)@10#2@13#+ ! BBB2'341:-(0#:%2133#3CD94#21:?$'-%'?12;E;01?1:5 #:5'3?(3'4'F(3;E;%2133#:-#=(%'(:?#315(;E;1%/0/21 5($;E;G'0:51:2'341:5#):5#:%2133#3:5(:#"#$%'%'(;H ! I'%1J ! K3#)13)G/-LM#3)34$+4'42#)#)34$+3?2'4 II Workshop de Software Livre - CIN/UFPE - Recife - PE ! N#?(341O 115 ! $#3?(341)C)DPP+Q('-8DR+4'42#8<)G($)R)'-)SH<)G($)S)'-) 115
  • 117. Funções ...Seu programa tendo cara de programa! II Workshop de Software Livre - CIN/UFPE - Recife - PE 116 116
  • 118. Definindo Funções Definição da função inicia com “def ” II Workshop de Software Livre - CIN/UFPE - Recife - PE 117 117
  • 119. Definindo Funções Definição da função inicia com “def ” Nome da função II Workshop de Software Livre - CIN/UFPE - Recife - PE 118 118
  • 120. Definindo Funções Definição da função inicia com “def ” Nome da função Argumentos II Workshop de Software Livre - CIN/UFPE - Recife - PE 119 119
  • 121. Definindo Funções Definição da função inicia com “def ” Nome da função Argumentos Identação II Workshop de Software Livre - CIN/UFPE - Recife - PE 120 120
  • 122. Definindo Funções Definição da função inicia com “def ” Nome da função Argumentos Identação “return” indica o retorno da função II Workshop de Software Livre - CIN/UFPE - Recife - PE 121 121
  • 123. Definindo Funções Definição da função inicia com “def ” Nome da função Argumentos Identação “return” indica o retorno da função Sem header file Sem declaração do tipo de retorno da função ou do tipo dos argumentos II Workshop de Software Livre - CIN/UFPE - Recife - PE 122 122
  • 124. Chamando uma função • Sintaxe básica para chamar uma função: >>> def myfun(x, y): return x * y >>> myfun(3, 4) 12 Exemplos5.py II Workshop de Software Livre - CIN/UFPE - Recife - PE 123 123
  • 125. Passagem de parâmetros • Várias métricas podem ser usadas na passagem dos parâmetros de uma função: >>> def myfun(x, y): return x * y >>> myfun(3, 4) 12 >>> myfun(y=3, x=4) 12 >>> myfun(3, y=4) 12 Exemplos5.py II Workshop de Software Livre - CIN/UFPE - Recife - PE 124 124
  • 126. Parâmetros com valores padrões • Cada parâmetro pode ter um valor padrão. • Utilizado quando um parâmetro é omitido na chamada da função def myfun(x, y = 0.3, prompt = True): res = x * y if prompt: print “Resposta é %f”, res return res Exemplos5.py II Workshop de Software Livre - CIN/UFPE - Recife - PE 125 125
  • 127. Parâmetros com valores padrões def myfun(x, y = 4, prompt = True): res = x * y if prompt: print “Resposta é %i”, res return res • Esta função pode ser invocada de várias formas: >>> myfun(3) Resposta é 12 12 >>> myfun(x=3, prompt = False) 12 >>> myfun(5, 2, False) 10 Exemplos5.py II Workshop de Software Livre - CIN/UFPE - Recife - PE 126 126
  • 128. Valor de retorno • Toda função em Python retorna alguma valor; • Mesmo funções que não possuem a cláusula return. • Funções que não possuem return retornam None. • None é uma constante especial definida na linguagem; • Similar a NULL, void, ou nil em outras linaguagens; • É lógicamente equivalente à False; • O interpretador não imprime None. II Workshop de Software Livre - CIN/UFPE - Recife - PE 127 127
  • 129. Valor de retorno • Uma função pode retornar mais de um valor >>> def teste(): x = 1 y = 2 z = 3 return x, y, z >>> x, y, z = teste() >>> ret = teste() >>> ret (1, 2, 3) Exemplos5.py II Workshop de Software Livre - CIN/UFPE - Recife - PE 128 128
  • 130. Algumas funções especiais ... e Python também tem seu momento funcional! II Workshop de Software Livre - CIN/UFPE - Recife - PE 129 129
  • 131. Parâmetros args Exemplos5.py II Workshop de Software Livre - CIN/UFPE - Recife - PE 130 130
  • 132. Funções map, reduce e filter • Função map(func, seq) • Função interna que aplica uma função func a cada item de um objeto sequência (seq) e retorna uma lista com os resultados da chamada da função. • Função filter(func, seq) • Função interna que aplica uma função filtro func a cada item de um objeto sequência (seq) e retorna uma lista com os resultados que satisfazem os critérios da função de teste seq. Exemplos5.py II Workshop de Software Livre - CIN/UFPE - Recife - PE 131 131
  • 133. Módulos ... Módulos: o que é, como criar e como utilizar. II Workshop de Software Livre - CIN/UFPE - Recife - PE 132 132
  • 134. Introdução 1/2 • Quando você encerra o interpretador, todas as definições de variáveis e funções são perdidas; • Solução é gerar um script e roda-lo. • Mas e se você desejar utilizar um determinada função do script em outro programa? • Solução são os módulos! II Workshop de Software Livre - CIN/UFPE - Recife - PE 133 133
  • 135. Introdução 2/2 • Um módulo é um arquivo .py contendo definições e comandos Python: • Funções • Variáveis e constantes • Classes • ... • Vantagem é a possibilidade de adicionar todas estas definições em outros arquivos ou módulos. • Isto é feito utilizando a cláusula import II Workshop de Software Livre - CIN/UFPE - Recife - PE 134 134
  • 136. Executando módulos como scripts • Rodar um módulo Python é similar a importar as definições do módulo para o interpretador. • Se você fizer python meuModulo.py irá carregar as definições e destruir logo em seguida! • Para executar algum determinado código de maneira similar à um script você deve testar a cláusula __name__ : if __name__ == “__main__”: print “Execute algum código” Exemplos5.py II Workshop de Software Livre - CIN/UFPE - Recife - PE 135 135
  • 137. Pacotes • Pacotes são coleções de módulos Python. • Qualquer diretório do sistema operacional que contém um arquivo __init__.py dentro é considerado um pacote. • Pacotes organizam módulos e permitem que programadores importem módulos da seguinte maneira: • import meuPacote.meuSubPacote.meuModulo # meuPacote/ # __init__.py -- vazio # meuSubPacote/ # __init__.py -- vazio # meuModulo.py -- modulo importado II Workshop de Software Livre - CIN/UFPE - Recife - PE 136 136
  • 138. Caminho de busca dos módulos • Quando você executa import meuModulo o interpretador procura pelo arquivo meuModulo.py seguindo uma determinada regra. • Primeiramente ele procura pelo arquivo no diretório corrente (onde o interpretador foi executado). • Caso ele não encontre o arquivo no diretório corrente, a busca prossegue em uma lista de diretórios que é especificada na variável sys.path • Você pode atribuir novos diretórios de busca na variável sys.path (ela é uma lista dentro do módulo sys da biblioteca padrão) • Útil quando você quer instalar seu módulo na máquina de um usuário. II Workshop de Software Livre - CIN/UFPE - Recife - PE 137 137
  • 139. Compilando um módulo Python ... Compilando??? Como assim??? Python não é interpretado??? II Workshop de Software Livre - CIN/UFPE - Recife - PE 138 138
  • 140. Compilando um módulo Python • Sim, Python é e continua sendo interpretada! • Python utiliza o conceito de byte-code (muito conhecido em Java). • O que acontece quando você importa um módulo: • 1) - Interpretador busca pelo arquivo .py correspondente; • 2) - Arquivo .py é “compilado” para o byte-code reconhecido pelo interpretador; • 3) - Byte-Code é incorporado a tabela de símbolos correntes do interpretador. II Workshop de Software Livre - CIN/UFPE - Recife - PE 139 139
  • 141. Compilando um módulo Python • Compilação para byte-code pode ser um gargalo de desempenho quando você carregar um programa! • Especialmente se você utiliza muitos módulos em seu programa. • Solução é pré-compilar os módulos antes de rodar seu programa! II Workshop de Software Livre - CIN/UFPE - Recife - PE 140 140
  • 142. Exercício 06 • II Workshop de Software Livre - CIN/UFPE - Recife - PE 141 141
  • 143. QuickSort • Algoritmo de ordenação bastante utilizado e muito eficiente • Complexidade BigO(nlogn) 1 . Escolher um pivô inicial x; 2. Colocar todos itens com chave menor que a de x à esquerda de x, formando uma seqüência S1; 3. Colocar todos itens com chave maior que a de x à direita de x, formando uma seqüência S2; 4. Isto feito, o mesmo processo é aplicado às seqüências S1 e S2, que por sua vez produzirão novos segmentos; 5. O processo deve ser aplicado sucessivamente às seqüências enquanto elas tiverem tamanho ≥ 1; II Workshop de Software Livre - CIN/UFPE - Recife - PE 142 142
  • 144. QuickSort • Você pensaria assim... def partition(list, l, e, g): if list == []: return (l, e, g) else: head = list[0] if head < e[0]: return partition(list[1:], l + [head], e, g) elif head > e[0]: return partition(list[1:], l, e, g + [head]) else: return partition(list[1:], l, e + [head], g) II Workshop de Software Livre - CIN/UFPE - Recife - PE 143 143
  • 145. QuickSort • Agora que você sabe compreensão de listas, você pode fazer assim! def qsort(L): if len(L) <= 1: return L return qsort( [ lt for lt in L[1:] if lt < L[0] ] ) + [ L[0] ] + qsort( [ ge for ge in L[1:] if ge >= L[0] ] ) • E não é que lembra a linguagem funcional Haskel ?! # qsort [] = [] # qsort (x:xs) = qsort elts_lt_x ++ [x] ++ qsort elts_greq_x # where # elts_lt_x = [y | y <- xs, y < x] # elts_greq_x = [y | y <- xs, y >= x] II Workshop de Software Livre - CIN/UFPE - Recife - PE 144 144
  • 146. Ordenação • Mas um programador Pythonico, ainda faria mais eficiente! list.sort() • Utiliza-se de uma implementação nativa de Python para ordenação de sequências! Mais eficiente, híbrido com complexidade no pior caso de nlogn. II Workshop de Software Livre - CIN/UFPE - Recife - PE 145 145
  • 147. Python é muito poderoso! • Não precisa reinventar a roda! Molde-a para adaptar ao seu problema! • A documentação de Python é bastante vasta e há muitas funcionalidades prontas! II Workshop de Software Livre - CIN/UFPE - Recife - PE 146 146
  • 148. Chegamos ao fim! =D Hora da random.choice([pergunta, dúvida, discussão]) !! II Workshop de Software Livre - CIN/UFPE - Recife - PE 147 147
  • 149. Referências • I Workshop CINLUG de Python (Ministrado no CIN) • http://www.cin.ufpe.br/~cinlug/files/workshop-python.1.pdf • http://www.cin.ufpe.br/~cinlug/files/workshop-python.2.pdf • Mini-Curso de Introdução a Python (Avaty Tecnologia e Info.) • http://www.avaty.com.br/artigos/CURSO-PYTHON.pdf II Workshop de Software Livre - CIN/UFPE - Recife - PE 148 148
  • 150. Hello, I am Python! Marcel Caraciolo Mini-Curso De Introdução a Python II Workshop de Software Livre - CIN/UFPE - Recife - PE 149 149