SlideShare una empresa de Scribd logo
1 de 28
Descargar para leer sin conexión
Python WTF?
                tamb´m conhecido como Python What a FAQ?
                    e


        Osvaldo Santana Neto <osvaldo.neto@openbossa.org>



                                    20 de junho de 2007




Osvaldo Santana Neto <osvaldo.neto@openbossa.org>   Python WTF?
Python
Uma introdu¸˜o obrigat´ria
           ca         o




           Criada por Guido van Rossum em 1991
           Nome provˆm do programa de TV Monty Python and the
                      e
           Flying Circus
           Sintaxe simples e f´cil de ser assimilada
                              a
           Linguagem Orientada ` objetos com suporte aos paradigmas
                                  a
           estrutural e funcional
           Tipagem Forte e Dinˆmica
                              a
           Multiplataforma
           Interpretada (compila para bytecode e interpreta)
           Ambiente Interativo



  Osvaldo Santana Neto <osvaldo.neto@openbossa.org>   Python WTF?
Python
Um exemplo obrigat´rio
                  o

    class Component ( object ):
        def __init__ ( self , * kargs ):
            self . _components = list ( kargs )

         def add ( self , component ):
             self . _components . append ( component )

         def __str__ ( self ):
             ret = quot; quot;
             for component in self . _components :
                 ret = quot; % s % s quot; % ( ret , component )
             return ret

    class Normal ( Component ): pass

    class Bold ( Component ):
        def __str__ ( self ):
            return quot; <b >% s </ b > quot; % ( component . __str__ ( self ))

    class Italic ( Component ):
        def __str__ ( self ):
            return quot; <i >% s </ i > quot; % ( component . __str__ ( self ))

    para = Normal ( quot; isto e um texto normal quot; )
    para . add ( Bold ( quot; , este e negrito quot; ))
    para . add ( Bold ( Italic ( quot; e este e negrito / italico quot; )))
    print para



  Osvaldo Santana Neto <osvaldo.neto@openbossa.org>      Python WTF?
IDEs

          Linguagem de Programa¸˜o n˜o ´ IDE
                               ca a e
          IDE n˜o ´ linguagem de Programa¸˜o
               ae                         ca
                   “Uma coisa ´ uma coisa, outra coisa ´ outra coisa”.
                              e                        e
                   – Desconhecido
          IDE n˜o ´ s´ um editor de texto
               aeo
          Nem toda IDE possui um editor de telas
          Nem sempre ´ necess´rio usar uma IDE
                     e       a
          IDEs: Eclipse, Visual Studio, Komodo, Delphi, Netbeans, ...
          Editores de Texto: Vi, Emacs, jEdit, Notepad, ...
          Linguagens de programa¸˜o: Python, Java, Lisp, C, C++, ...
                                ca
          N˜o irei comentar sobre todas as ferramentas dispon´
           a                                                 ıveis
          http://pythonbrasil.com.br/moin.cgi/IdesPython

 Osvaldo Santana Neto <osvaldo.neto@openbossa.org>   Python WTF?
IDEs Livres

                                                         Eclipse
                                                         Caracter´
                                                                 ısticas:
                                                               Autocompletion
                                                               Syntax Highlight
                                                               Navega¸˜o em c´digo
                                                                      ca       o
                                                               Verifica¸˜o de c´digo (PyLint)
                                                                      ca      o
                                                               Unit Test
                                                               Integra¸˜o com Depurador
                                                                      ca
                                                               Integra¸˜o com VCSs
                                                                      ca
                                                     http://www.easyeclipse.org/



   A vers˜o do Eclipse empacotada pelo grupo EasyEclipse j´
         a                                                a
   acompanha diversos plugins uteis no desenvolvimento Python,
                              ´
   entre eles o PyDev.

 Osvaldo Santana Neto <osvaldo.neto@openbossa.org>   Python WTF?
IDEs Livres

                                                         Pida
                                                         Caracter´
                                                                 ısticas:
                                                               Autocompletion
                                                               Syntax Highlight
                                                               Verifica¸˜o de c´digo
                                                                      ca      o
                                                               (PyFlakes)
                                                               Integra¸˜o com editor de tela
                                                                      ca
                                                               (Gazpacho)
                                                               Integra¸˜o com VCSs
                                                                      ca
                                                     http://pida.berlios.de/

   Um dos pontos fortes do Pida ´ a possibilidade de escolher entre
                                  e
   um editor de textos do pr´prio projeto ou o Vi para trabalhar com
                            o
   a edi¸˜o dos arquivos. Ele trabalha com o Gazpacho que ´ um
        ca                                                  e
   desenhador de telas que usa o toolkit GTK+.

 Osvaldo Santana Neto <osvaldo.neto@openbossa.org>   Python WTF?
IDEs Livres

                                                         Boa-Constructor
                                                         Caracter´
                                                                 ısticas:
                                                               Autocompletion
                                                               Syntax Highlight
                                                               Navega¸˜o em c´digo
                                                                      ca       o
                                                               Integra¸˜o com editor de tela
                                                                      ca
                                                               Integra¸˜o com Depurador
                                                                      ca
                                                     http://boa-constructor.sf.net/




   O foco principal dessa IDE s˜o as aplica¸˜es gr´ficas. Ela
                               a           co     a
   propositalmente tenta imitar o visual do Delphi (apesar de algumas
   pequenas diferen¸as).
                    c

 Osvaldo Santana Neto <osvaldo.neto@openbossa.org>   Python WTF?
IDEs Propriet´rias
             a

                                                         Wing IDE
                                                         $179 (Pro) / $35 (Personal)
                                                         Caracter´
                                                                 ısticas:
                                                               Autocompletion
                                                               Syntax Highlight
                                                               Navega¸˜o em c´digo
                                                                      ca       o
                                                               Integra¸˜o com Depurador
                                                                      ca
                                                               Integra¸˜o com VCSs
                                                                      ca
                                                     http://wingide.com/



   Essa IDE ´ muito conhecida entre os programadores Python pois
             e
   foi uma das primeiras dispon´
                               ıveis para se trabalhar com essa
   linguagem. Os desenvolvedores Zope a utilizam principalmente por
   sua ferramenta de depura¸˜o integrada.
                            ca
 Osvaldo Santana Neto <osvaldo.neto@openbossa.org>   Python WTF?
IDEs Propriet´rias
             a

                                                         Komodo IDE
                                                         $295
                                                         Caracter´
                                                                 ısticas:
                                                               Autocompletion
                                                               Syntax Highlight
                                                               Navega¸˜o em c´digo
                                                                      ca       o
                                                               Verifica¸˜o de c´digo
                                                                      ca      o
                                                               Integra¸˜o com Depurador
                                                                      ca
                                                               Integra¸˜o com VCSs
                                                                      ca
                                                     http://activestate.com/


   Essa IDE ´ ideal para desenvolvedores que trabalham com
             e
   aplica¸˜es Web. Ela ´ projetada especialmente para esse tipo de
         co             e
   desenvolvimento.

 Osvaldo Santana Neto <osvaldo.neto@openbossa.org>   Python WTF?
Editores de Texto Livres


            Vi - http://vim.org - Editor muito conhecido no universo
            dos Unix. Curva de aprendizado ´
                                           ıngreme mas extremamente
            poderoso.
           Emacs - http://gnu.org/software/emacs - Editor muito
           conhecido no universo dos Unix. Curva de aprendizado menos
           ´
           ıngreme que a do Vi. O Emacs tamb´m ´ extremamente
                                                ee
           poderoso e ´ um dos principais rivais do Vi.
                      e
            jEdit - http://jedit.org/ - Editor de textos multiplataforma
            tem uma riqu´ıssima biblioteca de plugins extremamente uteis
                                                                   ´
            para desenvolvedores.
            Outros - SciTE, jExt, Scribes1 , Gedit, Kate, ...


       1
           http://scribes.sf.net/
 Osvaldo Santana Neto <osvaldo.neto@openbossa.org>   Python WTF?
Editores de Texto Propriet´rios
                          a



          Komodo Edit - http://activestate.com - Gr´tis - A vers˜o
                                                        a       a
          reduzida da IDE Komodo mencionada anteriormente conta
          apenas com as funcionalidades de editor de textos.
          TextMate (OS X) - http://macromates.com - e39 - O editor
                                                       ´
          de textos mais badalado do universo Apple. E extremamente
          f´cil de usar e poderoso e pode ser personalizado atrav´s de
           a                                                     e
          scripts.
          UltraEdit (Win) - http://ultraedit.com/ - $49.95 - Velho
          conhecido dos programadores Windows esse editor de textos
          ainda “bate um bol˜o”entre eles.
                            a




 Osvaldo Santana Neto <osvaldo.neto@openbossa.org>   Python WTF?
Primeira grande quest˜o
                     a
Que IDE/Editor de textos usar?



             Menos ´ mais - Prefira IDEs mais simples de serem usadas.
                     e
             Seu foco tem que ser “aprender Python”e n˜o a IDE. Nessa
                                                          a
             linha de racioc´ prefira editores de textos ` IDEs.
                            ınio                          a
                            2 . Tive que aprender a usar Vi para trabalhar
             Eu uso... - Vi
             com Linux e desde ent˜o ele supre as minhas necessidades
                                     a
             totalmente.
                  Sim, ´ dif´ de aprender a us´-lo.
                       e ıcil                 a
                  Mas uma vez aprendido ele ´ o melhor. :)
                                            e
             E se eu usasse uma IDE?
                  Seria Komodo com dinheiro, ...
                  ...Eclipse sem dinheiro ou...
                  ...Pida (com Vi) depois de pronto. :)


        2
            O Scribes tamb´m parece interessante
                          e
  Osvaldo Santana Neto <osvaldo.neto@openbossa.org>   Python WTF?
Toolkits Gr´ficos
           a

          Crit´rios para a escolha de um Toolkit gr´fico
              e                                    a
                 Licenciamento - Eu posso usar o toolkit livremente? Se
                 minha aplica¸˜o n˜o for livre, tenho que pagar?
                             ca a
                 Aparˆncia - A minha aplica¸˜o vai ter a aparˆncia padr˜o da
                      e                      ca               e        a
                 plataforma? Vai ficar mais feia? Mais bonita?
                 Ferramentas - Eu vou ter que desenhar minhas telas no meu
                 programa ou posso usar um editor para isso?
                 Dependˆncia - Vou ter que adicionar mais uma dependˆncia
                         e                                             e
                 para minha aplica¸˜o?
                                  ca
                 Plataforma - O toolkit escolhido funciona em v´rias
                                                                 a
                 plataformas?
          Toolkits dispon´
                         ıveis: Tkinter, PyGtk, PyQt, wxPython,
          PyFLTK, PXPy, Anygui, PySWT, PyUi, ...
          N˜o irei comentar sobre todos os toolkits dispon´
           a                                              ıveis
          http://pythonbrasil.com.br/moin.cgi/ComparacaoDeGUIs

 Osvaldo Santana Neto <osvaldo.neto@openbossa.org>   Python WTF?
Toolkit Gr´fico
          a

                                                         PyGtk
                                                               Licen¸a: LGPL
                                                                     c
                                                               Aparˆncia: Gtk+
                                                                    e
                                                               Dependˆncias: Gtk+
                                                                       e
                                                               Plataformas: Win, OS X,
                                                               Linux
                                                     http://pygtk.org/




          Editores de telas: Gazpacho, Glade
          Bibliotecas: Eagle, PyMVC
          Framework: Kiwi (MVC)
          Aplica¸˜es: http://www.pygtk.org/applications.html
                co
 Osvaldo Santana Neto <osvaldo.neto@openbossa.org>   Python WTF?
Toolkit Gr´fico
          a

                                                         PyQt
                                                               Licen¸a: GPL (ou Qt
                                                                     c
                                                               Licence)
                                                               Aparˆncia: Qt/Nativa
                                                                    e
                                                               Dependˆncias: Qt
                                                                        e
                                                               Plataformas: Win, OS X,
                                                               Linux
                                                     riverbankcomputing.co.uk/pyqt




          Editores de telas: Qt Designer
          Bibliotecas: PyKDE
          Aplica¸˜es: V´rias aplica¸˜es KDE
                co     a           co

 Osvaldo Santana Neto <osvaldo.neto@openbossa.org>   Python WTF?
Toolkit Gr´fico
          a


                                                         wxPython
                                                               Licen¸a: wxWidgets (BSD)
                                                                     c
                                                               Aparˆncia: Nativa
                                                                    e
                                                               Dependˆncias: wxWidgets
                                                                       e
                                                               Plataformas: Win, OS X,
                                                               Linux
                                                     http://wxpython.org/



          Editores de telas: wxGlade, wxDesigner (propriet´rio)
                                                          a
          Aplica¸˜es: Chandler, Juice, PySoulSeek, ...
                co



 Osvaldo Santana Neto <osvaldo.neto@openbossa.org>   Python WTF?
Segunda grande quest˜o
                    a
Que toolkit gr´fico usar?
              a



           Para escolher o melhor, dˆ pesos aos items que devem ser
                                    e
           avaliados em um toolkit gr´fico, dˆ notas ` esses quesitos
                                      a      e       a
           para cada um dos toolkits e calcule a m´dia ponderada.
                                                   e
           Experimente os dois melhores colocados desenvolvendo uma
           mini-aplica¸˜o.
                      ca
           Eu uso... - PyGtk. Usei o m´todo descrito acima.
                                       e
                  Sim, eu tive que usar isso no trabalho
                  N˜o gosto de dois componentes GTK: TreeView e TextView.
                    a
                  Dˆ uma olhada no Eagle e no Kiwi
                    e
           Eu n˜o gosto de desenvolver aplica¸˜es standalone. Prefiro
               a                             co
           desenvolvimento Web. Empresas como o Google est˜o  a
           mostrando que o futuro est´ dentro do navegador.
                                     a


  Osvaldo Santana Neto <osvaldo.neto@openbossa.org>   Python WTF?
Framework Web

          Ao escolher um framework Web avalie os seguintes itens:
                 Popularidade - Os frameworks Web mais usados contam com
                 um conjunto de m´dulos e plug-ins muito maior do que os
                                   o
                 outros.
                 Atividade - Veja se o desenvolvimento do framework ´ ativo.
                                                                        e
                 Documenta¸˜o - Exija documenta¸˜o organizada, completa e
                               ca                   ca
                 de f´cil entendimento. Conte´dos multim´ como screencasts
                     a                        u            ıdia
                 tamb´m s˜o importantes.
                       e    a
                 Experimente - Esse item ´ o mais importante. Vocˆ tem que
                                           e                          e
                 experimentar os frameworks que mais te interessaram porque
                 s´ assim vocˆ vai conseguir descobrir se ele ´ mais adequado `
                  o            e                              e               a
                 sua aplica¸˜o.
                            ca
          Frameworks Web: Django, TurboGears, Pylons, Zope/Plone,
          Webware, CherryPy, Quixote, Twisted Woven, Spyce, ...
          N˜o irei comentar sobre todos os frameworks existentes
           a
          http://www.pythonbrasil.com.br/moin.cgi/PythonParaWeb

 Osvaldo Santana Neto <osvaldo.neto@openbossa.org>   Python WTF?
Framework Web

                                                         Django
                                                               Documenta¸˜o: Muito
                                                                           ca
                                                               completa e organizada
                                                               Uso: Extremamente f´cil
                                                                                    a
                                                               Template: Django
                                                               Persistˆncia: Django ORM
                                                                      e
                                                     http://djangoproject.com/




   O projeto Django nasceu na onda dos frameworks Web ´geis onde
                                                         a
   o Ruby on Rails foi pioneiro. O framework ´ muito bem
                                             e
   implementado e a documenta¸˜o merece men¸˜o honrosa. A
                                 ca            ca
   comunidade tamb´m ´ muito ativa.
                    ee
 Osvaldo Santana Neto <osvaldo.neto@openbossa.org>   Python WTF?
Framework Web

                                                         TurboGears
                                                               Documenta¸˜o:
                                                                           ca
                                                               desorganizada
                                                               Uso: Extremamente f´cil
                                                                                  a
                                                               Template: Kid, Genshi ou
                                                               ZPT
                                                               Persistˆncia: SQLObject ou
                                                                      e
                                                               SQLAlchemy
                                                     http://turbogears.org/




   O Turbogears ´ o mais f´cil de ser usado. O fato dele ser s´ um
                 e          a                                 o
   aglutinador de outros frameworks tamb´m o torna muito mais
                                          e
   flex´
      ıvel. Mas o seu defeito ´ a documenta¸˜o que ´ pouca,
                              e             ca      e
   defasada e desorganizada.
 Osvaldo Santana Neto <osvaldo.neto@openbossa.org>   Python WTF?
Framework Web

                                                         Plone (Zope)
                                                               Documenta¸˜o: razo´vel
                                                                           ca     a
                                                               Uso: Complexo
                                                               Template: ZPT
                                                               Persistˆncia: ZODB / BDs
                                                                       e
                                                               relacionais
                                                     http://plone.org/




   O Plone n˜o ´ exatamente um framework Web mas a sua
              ae
   flexibilidade ´ t˜o grande que o torna um concorrente destes. Ele ´
                ea                                                  e
   desenvolvido em Zope e esse sim ´ um software grande e complexo
                                     e
   (mas extremamente poderoso).
 Osvaldo Santana Neto <osvaldo.neto@openbossa.org>   Python WTF?
Terceira grande quest˜o
                     a
Que framework Web usar?



             N˜o existe f´rmula m´gica para facilitar a escolha. Tem que
               a         o       a
             experimentar cada um deles
             O GvR escolheu o Django
             Eu uso... - TurboGears agora. Mas vou usar Django no
             futuro
                  Eu usei o TurboGears porque comprei o livro e queria justificar
                  o investimento.
                  Eu gosto mais do sistema de mapeamento de URL do TG.
                  Eu ainda n˜o experimentei o Pylons3 , mas ouvi boas hist´rias
                             a                                            o
                  sobre ele
             Existe uma inten¸˜o dos desenvolvedores do Pylons e do
                             ca
             TurboGears de trabalhar em conjunto.

        3
            http://pylonshq.com/
  Osvaldo Santana Neto <osvaldo.neto@openbossa.org>   Python WTF?
Banco de Dados



          Evite escolher Bancos de Dados. Prefira usar frameworks que
          abstraiam o Banco de Dados.
                 Exceto se o Banco de Dados for Orientado ` Objetos
                                                          a
          Frameworks: SQLObject, SQLAlchemy, ZODB, Durus...
          Bancos de Dados: SQLite, MySQL, PostgreSQL, Oracle,
          MsSQL, ODBC, ...
          N˜o irei comentar sobre todos os frameworks ou Bancos de
           a
          Dados existentes
          http://pythonbrasil.com.br/moin.cgi/BancosDeDadosSql




 Osvaldo Santana Neto <osvaldo.neto@openbossa.org>   Python WTF?
Banco de Dados
SQLObject



    Exemplo:
    from sqlobject import *
    __ co nn ect ion__ = quot; sqlite ://: memory : quot;

    class Permission ( SQLObject ):
      p e r mi s s ion_name = UnicodeCol ( length =16 ,
                         alternateID = True ,
                         a l t e r n a t e M e t h o d N a m e = ’ b y _ p e r mi s s i o n _ n a m e ’)
      description = UnicodeCol ( length =255)
      groups = RelatedJoin ( ’ Group ’ ,
                       i nt er m ed ia t eT a bl e = ’ gr oup_ perm issi on ’ ,
                       joinColumn = ’ permission_id ’ ,
                       otherColumn = ’ group_id ’)


    O SQLObject permite fazer o mapeamento objeto-relacional de
    maneira muito simples e r´pida. O banco de dados usado ´
                             a                                e
    definido atrav´s da vari´vel connection . O acesso ao BD fica
                 e         a
    transparente para o desenvolvedor que ir´ lidar com objetos na
                                            a
    maior parte do tempo.


  Osvaldo Santana Neto <osvaldo.neto@openbossa.org>                              Python WTF?
Banco de Dados
SQLAlchemy


    Exemplo:
    from sqlalchemy import *
    from sqlalchemy . ext . assignmapper import assign_mapper

    p e r m i s s i o n s _ t a bl e = Table ( ’ permission ’ , metadata ,
        Column ( ’ permission_id ’ , Integer , primary_key = True ) ,
        Column ( ’ permission_name ’ , Unicode (16) , unique = True ) ,
        Column ( ’ description ’ , Unicode (255))
    )

    class Permission ( object ): pass

    def assign (* args , ** kw ):
        return assign_mapper ( session . context , * args , ** kw )

    assign ( Permission , permissions_table ,
      properties = dict ( groups = relation ( Group ,
      secondary = group_permission_table , backref = ’ permissions ’ )))


    O SQLAlchemy usa um outro sistema de trabalho que d´ mais
                                                            a
    flexibilidade ao mapeamento objeto-relacional. Isso o torna ideal
    para o desenvolvimento de aplica¸˜es que precisar˜o usar bancos
                                    co               a
    de dados legados.
  Osvaldo Santana Neto <osvaldo.neto@openbossa.org>        Python WTF?
Banco de Dados
Outras alternativas


            ZODB - Banco de Dados orientado ` objetos, n˜o utiliza o
                                               a        a
            modelo relacional de banco de dados.
            DB-API - API Python padronizada para acesso ` bancos de
                                                        a
            dados relacionais.
                   SQLite - Acompanha o Python 2.5
                   MySQL - mysqldb
                   PostgreSQL - psycopg2
                   Oracle - cx oracle
            Exemplo com MySQL:
            # Para conectar outros bancos , somente essa parte muda
            import MySQLdb
            con = MySQLdb . connect ( ’ servidor ’ , ’ usuario ’ , ’ senha ’)
            con . select_db ( ’ banco de dados ’)
            # Fim

            cursor = con . cursor ()
            cursor . execute ( ’ ALGUM SQL ’)

            con . close ()



   Osvaldo Santana Neto <osvaldo.neto@openbossa.org>    Python WTF?
Quarta grande quest˜o
                   a
Que Banco de Dados usar?



           A regra de outro aqui ´: afaste-se o m´ximo poss´ do
                                 e               a         ıvel
           banco de dados.
           Se for usar um banco de dados relacional use um mapeador
           objeto-relacional
           Eu uso... - SQLAlchemy, mas sonho e poder usar s´ o ZODB
                                                            o
                  O SQLAlchemy parece ser melhor mantido que o SQLObject e
                  sua documenta¸˜o impressiona pela qualidade
                                 ca
                  O ZODB tem fama de n˜o escalar bem e n˜o ´ bem suportado
                                         a                 ae
                  por outros frameworks que n˜o o Zope
                                             a
           Como o SQLite acompanha o Python ele se mostra uma
           excelente alternativa para o desenvolvimento ou para a
           execu¸˜o de testes (usando o banco de dados em mem´ria).
                 ca                                               o


  Osvaldo Santana Neto <osvaldo.neto@openbossa.org>   Python WTF?
Quinta grande quest˜o
                   a
Qual o sentido da vida, do universo e de tudo mais?




                                       Perguntas?




                                  http://www.indt.org.br/


  Osvaldo Santana Neto <osvaldo.neto@openbossa.org>   Python WTF?

Más contenido relacionado

La actualidad más candente

Trabalho de Paradigmas Da Linguagem De Programação - Python
Trabalho de Paradigmas Da Linguagem De Programação - PythonTrabalho de Paradigmas Da Linguagem De Programação - Python
Trabalho de Paradigmas Da Linguagem De Programação - PythonJanderson Campêlo
 
Automação de Aplicativos: Scripting com Python
Automação de Aplicativos: Scripting com PythonAutomação de Aplicativos: Scripting com Python
Automação de Aplicativos: Scripting com PythonFabio Spanhol
 
Desenvolvendo aplicações web com python e web2py
Desenvolvendo aplicações web com python e web2pyDesenvolvendo aplicações web com python e web2py
Desenvolvendo aplicações web com python e web2pyGilson Filho
 
Django: desenvolvendo aplicações web de maneira simples e rápida!
Django: desenvolvendo aplicações web de maneira simples e rápida!Django: desenvolvendo aplicações web de maneira simples e rápida!
Django: desenvolvendo aplicações web de maneira simples e rápida!Felipe Queiroz
 
Tutorial Django + Python
Tutorial Django + PythonTutorial Django + Python
Tutorial Django + PythonMateus Padua
 
Linguagem C 01 - Tópicos Introdutórios
Linguagem C 01 - Tópicos IntrodutóriosLinguagem C 01 - Tópicos Introdutórios
Linguagem C 01 - Tópicos IntrodutóriosFabio Spanhol
 
De Zero à Web com Python e Django
De Zero à Web com Python e DjangoDe Zero à Web com Python e Django
De Zero à Web com Python e DjangoOsvaldo Santana Neto
 
Trabalho sobre a linguagem Python
Trabalho sobre a linguagem PythonTrabalho sobre a linguagem Python
Trabalho sobre a linguagem PythonRicardo Zalla
 
Por Que Python É Tão Lento?
Por Que Python É Tão Lento?Por Que Python É Tão Lento?
Por Que Python É Tão Lento?Rudá Moura
 
Trabalho linguagem python
Trabalho linguagem  pythonTrabalho linguagem  python
Trabalho linguagem pythonBruno Maspoli
 
BDD: Torne viva a documentação de seus sistemas
BDD: Torne viva a documentação de seus sistemasBDD: Torne viva a documentação de seus sistemas
BDD: Torne viva a documentação de seus sistemasVitor Mattos
 
Python e Django na Globo.com
Python e Django na Globo.comPython e Django na Globo.com
Python e Django na Globo.comricobl
 
Desenvolvendo mvp com python
Desenvolvendo mvp com pythonDesenvolvendo mvp com python
Desenvolvendo mvp com pythonBruno Rocha
 
Django - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com PythonDjango - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com PythonIgor Sobreira
 
Linguagens Dinamicas na JVM
Linguagens Dinamicas na JVMLinguagens Dinamicas na JVM
Linguagens Dinamicas na JVMWilliam Gouvea
 
Introdução à Linguagem de Programação GO
Introdução à Linguagem de Programação GOIntrodução à Linguagem de Programação GO
Introdução à Linguagem de Programação GOJose Augusto Cintra
 

La actualidad más candente (20)

Trabalho de Paradigmas Da Linguagem De Programação - Python
Trabalho de Paradigmas Da Linguagem De Programação - PythonTrabalho de Paradigmas Da Linguagem De Programação - Python
Trabalho de Paradigmas Da Linguagem De Programação - Python
 
Automação de Aplicativos: Scripting com Python
Automação de Aplicativos: Scripting com PythonAutomação de Aplicativos: Scripting com Python
Automação de Aplicativos: Scripting com Python
 
Desenvolvendo aplicações web com python e web2py
Desenvolvendo aplicações web com python e web2pyDesenvolvendo aplicações web com python e web2py
Desenvolvendo aplicações web com python e web2py
 
Django: desenvolvendo aplicações web de maneira simples e rápida!
Django: desenvolvendo aplicações web de maneira simples e rápida!Django: desenvolvendo aplicações web de maneira simples e rápida!
Django: desenvolvendo aplicações web de maneira simples e rápida!
 
Tutorial Django + Python
Tutorial Django + PythonTutorial Django + Python
Tutorial Django + Python
 
Linguagem Python
Linguagem PythonLinguagem Python
Linguagem Python
 
Linguagem C 01 - Tópicos Introdutórios
Linguagem C 01 - Tópicos IntrodutóriosLinguagem C 01 - Tópicos Introdutórios
Linguagem C 01 - Tópicos Introdutórios
 
De Zero à Web com Python e Django
De Zero à Web com Python e DjangoDe Zero à Web com Python e Django
De Zero à Web com Python e Django
 
AulaPython.pdf
AulaPython.pdfAulaPython.pdf
AulaPython.pdf
 
Canivete suíço do Python
Canivete suíço do PythonCanivete suíço do Python
Canivete suíço do Python
 
Trabalho sobre a linguagem Python
Trabalho sobre a linguagem PythonTrabalho sobre a linguagem Python
Trabalho sobre a linguagem Python
 
Por Que Python É Tão Lento?
Por Que Python É Tão Lento?Por Que Python É Tão Lento?
Por Que Python É Tão Lento?
 
Trabalho linguagem python
Trabalho linguagem  pythonTrabalho linguagem  python
Trabalho linguagem python
 
Python na Web
Python na WebPython na Web
Python na Web
 
BDD: Torne viva a documentação de seus sistemas
BDD: Torne viva a documentação de seus sistemasBDD: Torne viva a documentação de seus sistemas
BDD: Torne viva a documentação de seus sistemas
 
Python e Django na Globo.com
Python e Django na Globo.comPython e Django na Globo.com
Python e Django na Globo.com
 
Desenvolvendo mvp com python
Desenvolvendo mvp com pythonDesenvolvendo mvp com python
Desenvolvendo mvp com python
 
Django - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com PythonDjango - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com Python
 
Linguagens Dinamicas na JVM
Linguagens Dinamicas na JVMLinguagens Dinamicas na JVM
Linguagens Dinamicas na JVM
 
Introdução à Linguagem de Programação GO
Introdução à Linguagem de Programação GOIntrodução à Linguagem de Programação GO
Introdução à Linguagem de Programação GO
 

Similar a Python WTFAQ?

Tradução de Aplicativos Livres
Tradução de Aplicativos LivresTradução de Aplicativos Livres
Tradução de Aplicativos LivresÁtila Camurça
 
Integração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlIntegração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlManuel Lemos
 
Integracao Contínua com CruiseControl e phpUnderControl
Integracao Contínua com CruiseControl e phpUnderControlIntegracao Contínua com CruiseControl e phpUnderControl
Integracao Contínua com CruiseControl e phpUnderControlDiego Tremper
 
Integração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlIntegração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlDiego Tremper
 
Performance de verdade com Phalcon Framework
Performance de verdade com Phalcon FrameworkPerformance de verdade com Phalcon Framework
Performance de verdade com Phalcon FrameworkJaime Neto
 
Integração Contínua com Cruise Control e phpUnderControl
Integração Contínua com Cruise Control e phpUnderControlIntegração Contínua com Cruise Control e phpUnderControl
Integração Contínua com Cruise Control e phpUnderControlDiego Tremper
 
Python Com Baterias Incluídas
Python Com Baterias IncluídasPython Com Baterias Incluídas
Python Com Baterias IncluídasJonh Edson
 
Por Que Python - #PUGCE
Por Que Python - #PUGCEPor Que Python - #PUGCE
Por Que Python - #PUGCETiago Freire
 
Curso ASP.Net - Módulo 1
Curso ASP.Net - Módulo 1Curso ASP.Net - Módulo 1
Curso ASP.Net - Módulo 1michellobo
 
Introdução aos computadores e à World Wide Web
Introdução aos computadores e à World Wide WebIntrodução aos computadores e à World Wide Web
Introdução aos computadores e à World Wide WebCícero Quarto
 
TypeScript - Campus party 2013
TypeScript - Campus party 2013TypeScript - Campus party 2013
TypeScript - Campus party 2013Giovanni Bassi
 
Entrega contínua com arquitetura distribuida
Entrega contínua com arquitetura distribuidaEntrega contínua com arquitetura distribuida
Entrega contínua com arquitetura distribuidaLeonardo Kobus
 
Aula 1 -_ambiente_visual_studio_2012
Aula 1 -_ambiente_visual_studio_2012Aula 1 -_ambiente_visual_studio_2012
Aula 1 -_ambiente_visual_studio_2012Laís Vidal
 

Similar a Python WTFAQ? (20)

Tradução de Aplicativos Livres
Tradução de Aplicativos LivresTradução de Aplicativos Livres
Tradução de Aplicativos Livres
 
Csharp
CsharpCsharp
Csharp
 
Python b1tch
Python b1tchPython b1tch
Python b1tch
 
Isc aula 7
Isc   aula 7Isc   aula 7
Isc aula 7
 
Linguagens de programação
Linguagens de programaçãoLinguagens de programação
Linguagens de programação
 
Integração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlIntegração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControl
 
Integracao Contínua com CruiseControl e phpUnderControl
Integracao Contínua com CruiseControl e phpUnderControlIntegracao Contínua com CruiseControl e phpUnderControl
Integracao Contínua com CruiseControl e phpUnderControl
 
Integração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlIntegração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControl
 
Performance de verdade com Phalcon Framework
Performance de verdade com Phalcon FrameworkPerformance de verdade com Phalcon Framework
Performance de verdade com Phalcon Framework
 
Integração Contínua com Cruise Control e phpUnderControl
Integração Contínua com Cruise Control e phpUnderControlIntegração Contínua com Cruise Control e phpUnderControl
Integração Contínua com Cruise Control e phpUnderControl
 
Python Com Baterias Incluídas
Python Com Baterias IncluídasPython Com Baterias Incluídas
Python Com Baterias Incluídas
 
Por Que Python - #PUGCE
Por Que Python - #PUGCEPor Que Python - #PUGCE
Por Que Python - #PUGCE
 
Curso ASP.Net - Módulo 1
Curso ASP.Net - Módulo 1Curso ASP.Net - Módulo 1
Curso ASP.Net - Módulo 1
 
Introdução ao java
Introdução ao javaIntrodução ao java
Introdução ao java
 
Introdução à linguagem python
Introdução à linguagem pythonIntrodução à linguagem python
Introdução à linguagem python
 
Introdução aos computadores e à World Wide Web
Introdução aos computadores e à World Wide WebIntrodução aos computadores e à World Wide Web
Introdução aos computadores e à World Wide Web
 
TypeScript - Campus party 2013
TypeScript - Campus party 2013TypeScript - Campus party 2013
TypeScript - Campus party 2013
 
Entrega contínua com arquitetura distribuida
Entrega contínua com arquitetura distribuidaEntrega contínua com arquitetura distribuida
Entrega contínua com arquitetura distribuida
 
Plugins
PluginsPlugins
Plugins
 
Aula 1 -_ambiente_visual_studio_2012
Aula 1 -_ambiente_visual_studio_2012Aula 1 -_ambiente_visual_studio_2012
Aula 1 -_ambiente_visual_studio_2012
 

Más de Osvaldo Santana Neto

Contruindo um Framework Web de Brinquedo só com Python
Contruindo um Framework Web de Brinquedo só com PythonContruindo um Framework Web de Brinquedo só com Python
Contruindo um Framework Web de Brinquedo só com PythonOsvaldo Santana Neto
 
Dave Thomas - Agile is Dead (GOTO 2015)
Dave Thomas - Agile is Dead (GOTO 2015)Dave Thomas - Agile is Dead (GOTO 2015)
Dave Thomas - Agile is Dead (GOTO 2015)Osvaldo Santana Neto
 
Como funciona um time remoto de desenvolvimento - Caipyra 2018
Como funciona um time remoto de desenvolvimento - Caipyra 2018Como funciona um time remoto de desenvolvimento - Caipyra 2018
Como funciona um time remoto de desenvolvimento - Caipyra 2018Osvaldo Santana Neto
 
Escalando times através do trabalho remoto
Escalando times através do trabalho remotoEscalando times através do trabalho remoto
Escalando times através do trabalho remotoOsvaldo Santana Neto
 
Plataforma distribuída de Microserviços ou, como a Olist funciona
Plataforma distribuída de Microserviços ou, como a Olist funcionaPlataforma distribuída de Microserviços ou, como a Olist funciona
Plataforma distribuída de Microserviços ou, como a Olist funcionaOsvaldo Santana Neto
 
Real Life Hackers @ PechaKucha 20x20
Real Life Hackers @ PechaKucha 20x20Real Life Hackers @ PechaKucha 20x20
Real Life Hackers @ PechaKucha 20x20Osvaldo Santana Neto
 
Entendiendo Unicode (Facundo Batista)
Entendiendo Unicode (Facundo Batista)Entendiendo Unicode (Facundo Batista)
Entendiendo Unicode (Facundo Batista)Osvaldo Santana Neto
 
Como me tornei um empreendedor pythonista
Como me tornei um empreendedor pythonistaComo me tornei um empreendedor pythonista
Como me tornei um empreendedor pythonistaOsvaldo Santana Neto
 
Matando (ou quase) Unicode(De|En)codeErrors (lightning talk)
Matando (ou quase) Unicode(De|En)codeErrors (lightning talk)Matando (ou quase) Unicode(De|En)codeErrors (lightning talk)
Matando (ou quase) Unicode(De|En)codeErrors (lightning talk)Osvaldo Santana Neto
 
Ludeos - Venda seu conteúdo online (how it works)
Ludeos - Venda seu conteúdo online (how it works)Ludeos - Venda seu conteúdo online (how it works)
Ludeos - Venda seu conteúdo online (how it works)Osvaldo Santana Neto
 
App Engine: aplicações escaláveis em poucas horas
App Engine: aplicações escaláveis em poucas horasApp Engine: aplicações escaláveis em poucas horas
App Engine: aplicações escaláveis em poucas horasOsvaldo Santana Neto
 

Más de Osvaldo Santana Neto (20)

Basic Brainf*ck
Basic Brainf*ckBasic Brainf*ck
Basic Brainf*ck
 
Contruindo um Framework Web de Brinquedo só com Python
Contruindo um Framework Web de Brinquedo só com PythonContruindo um Framework Web de Brinquedo só com Python
Contruindo um Framework Web de Brinquedo só com Python
 
A Web é uma API
A Web é uma APIA Web é uma API
A Web é uma API
 
Dave Thomas - Agile is Dead (GOTO 2015)
Dave Thomas - Agile is Dead (GOTO 2015)Dave Thomas - Agile is Dead (GOTO 2015)
Dave Thomas - Agile is Dead (GOTO 2015)
 
Olist Architecture v2.0
Olist Architecture v2.0Olist Architecture v2.0
Olist Architecture v2.0
 
Advanced Brainf*ck
Advanced Brainf*ckAdvanced Brainf*ck
Advanced Brainf*ck
 
Corrigindo Bugs no CPython
Corrigindo Bugs no CPythonCorrigindo Bugs no CPython
Corrigindo Bugs no CPython
 
Como funciona um time remoto de desenvolvimento - Caipyra 2018
Como funciona um time remoto de desenvolvimento - Caipyra 2018Como funciona um time remoto de desenvolvimento - Caipyra 2018
Como funciona um time remoto de desenvolvimento - Caipyra 2018
 
Escalando times através do trabalho remoto
Escalando times através do trabalho remotoEscalando times através do trabalho remoto
Escalando times através do trabalho remoto
 
Plataforma distribuída de Microserviços ou, como a Olist funciona
Plataforma distribuída de Microserviços ou, como a Olist funcionaPlataforma distribuída de Microserviços ou, como a Olist funciona
Plataforma distribuída de Microserviços ou, como a Olist funciona
 
Real Life Hackers @ PechaKucha 20x20
Real Life Hackers @ PechaKucha 20x20Real Life Hackers @ PechaKucha 20x20
Real Life Hackers @ PechaKucha 20x20
 
TDD com Python (Completo)
TDD com Python (Completo)TDD com Python (Completo)
TDD com Python (Completo)
 
Curso de Python e Django
Curso de Python e DjangoCurso de Python e Django
Curso de Python e Django
 
Entendiendo Unicode (Facundo Batista)
Entendiendo Unicode (Facundo Batista)Entendiendo Unicode (Facundo Batista)
Entendiendo Unicode (Facundo Batista)
 
Como me tornei um empreendedor pythonista
Como me tornei um empreendedor pythonistaComo me tornei um empreendedor pythonista
Como me tornei um empreendedor pythonista
 
TDD com Python
TDD com PythonTDD com Python
TDD com Python
 
Matando (ou quase) Unicode(De|En)codeErrors (lightning talk)
Matando (ou quase) Unicode(De|En)codeErrors (lightning talk)Matando (ou quase) Unicode(De|En)codeErrors (lightning talk)
Matando (ou quase) Unicode(De|En)codeErrors (lightning talk)
 
Ludeos - Venda seu conteúdo online (how it works)
Ludeos - Venda seu conteúdo online (how it works)Ludeos - Venda seu conteúdo online (how it works)
Ludeos - Venda seu conteúdo online (how it works)
 
App Engine: aplicações escaláveis em poucas horas
App Engine: aplicações escaláveis em poucas horasApp Engine: aplicações escaláveis em poucas horas
App Engine: aplicações escaláveis em poucas horas
 
Programação RAD com Python
Programação RAD com PythonProgramação RAD com Python
Programação RAD com Python
 

Python WTFAQ?

  • 1. Python WTF? tamb´m conhecido como Python What a FAQ? e Osvaldo Santana Neto <osvaldo.neto@openbossa.org> 20 de junho de 2007 Osvaldo Santana Neto <osvaldo.neto@openbossa.org> Python WTF?
  • 2. Python Uma introdu¸˜o obrigat´ria ca o Criada por Guido van Rossum em 1991 Nome provˆm do programa de TV Monty Python and the e Flying Circus Sintaxe simples e f´cil de ser assimilada a Linguagem Orientada ` objetos com suporte aos paradigmas a estrutural e funcional Tipagem Forte e Dinˆmica a Multiplataforma Interpretada (compila para bytecode e interpreta) Ambiente Interativo Osvaldo Santana Neto <osvaldo.neto@openbossa.org> Python WTF?
  • 3. Python Um exemplo obrigat´rio o class Component ( object ): def __init__ ( self , * kargs ): self . _components = list ( kargs ) def add ( self , component ): self . _components . append ( component ) def __str__ ( self ): ret = quot; quot; for component in self . _components : ret = quot; % s % s quot; % ( ret , component ) return ret class Normal ( Component ): pass class Bold ( Component ): def __str__ ( self ): return quot; <b >% s </ b > quot; % ( component . __str__ ( self )) class Italic ( Component ): def __str__ ( self ): return quot; <i >% s </ i > quot; % ( component . __str__ ( self )) para = Normal ( quot; isto e um texto normal quot; ) para . add ( Bold ( quot; , este e negrito quot; )) para . add ( Bold ( Italic ( quot; e este e negrito / italico quot; ))) print para Osvaldo Santana Neto <osvaldo.neto@openbossa.org> Python WTF?
  • 4. IDEs Linguagem de Programa¸˜o n˜o ´ IDE ca a e IDE n˜o ´ linguagem de Programa¸˜o ae ca “Uma coisa ´ uma coisa, outra coisa ´ outra coisa”. e e – Desconhecido IDE n˜o ´ s´ um editor de texto aeo Nem toda IDE possui um editor de telas Nem sempre ´ necess´rio usar uma IDE e a IDEs: Eclipse, Visual Studio, Komodo, Delphi, Netbeans, ... Editores de Texto: Vi, Emacs, jEdit, Notepad, ... Linguagens de programa¸˜o: Python, Java, Lisp, C, C++, ... ca N˜o irei comentar sobre todas as ferramentas dispon´ a ıveis http://pythonbrasil.com.br/moin.cgi/IdesPython Osvaldo Santana Neto <osvaldo.neto@openbossa.org> Python WTF?
  • 5. IDEs Livres Eclipse Caracter´ ısticas: Autocompletion Syntax Highlight Navega¸˜o em c´digo ca o Verifica¸˜o de c´digo (PyLint) ca o Unit Test Integra¸˜o com Depurador ca Integra¸˜o com VCSs ca http://www.easyeclipse.org/ A vers˜o do Eclipse empacotada pelo grupo EasyEclipse j´ a a acompanha diversos plugins uteis no desenvolvimento Python, ´ entre eles o PyDev. Osvaldo Santana Neto <osvaldo.neto@openbossa.org> Python WTF?
  • 6. IDEs Livres Pida Caracter´ ısticas: Autocompletion Syntax Highlight Verifica¸˜o de c´digo ca o (PyFlakes) Integra¸˜o com editor de tela ca (Gazpacho) Integra¸˜o com VCSs ca http://pida.berlios.de/ Um dos pontos fortes do Pida ´ a possibilidade de escolher entre e um editor de textos do pr´prio projeto ou o Vi para trabalhar com o a edi¸˜o dos arquivos. Ele trabalha com o Gazpacho que ´ um ca e desenhador de telas que usa o toolkit GTK+. Osvaldo Santana Neto <osvaldo.neto@openbossa.org> Python WTF?
  • 7. IDEs Livres Boa-Constructor Caracter´ ısticas: Autocompletion Syntax Highlight Navega¸˜o em c´digo ca o Integra¸˜o com editor de tela ca Integra¸˜o com Depurador ca http://boa-constructor.sf.net/ O foco principal dessa IDE s˜o as aplica¸˜es gr´ficas. Ela a co a propositalmente tenta imitar o visual do Delphi (apesar de algumas pequenas diferen¸as). c Osvaldo Santana Neto <osvaldo.neto@openbossa.org> Python WTF?
  • 8. IDEs Propriet´rias a Wing IDE $179 (Pro) / $35 (Personal) Caracter´ ısticas: Autocompletion Syntax Highlight Navega¸˜o em c´digo ca o Integra¸˜o com Depurador ca Integra¸˜o com VCSs ca http://wingide.com/ Essa IDE ´ muito conhecida entre os programadores Python pois e foi uma das primeiras dispon´ ıveis para se trabalhar com essa linguagem. Os desenvolvedores Zope a utilizam principalmente por sua ferramenta de depura¸˜o integrada. ca Osvaldo Santana Neto <osvaldo.neto@openbossa.org> Python WTF?
  • 9. IDEs Propriet´rias a Komodo IDE $295 Caracter´ ısticas: Autocompletion Syntax Highlight Navega¸˜o em c´digo ca o Verifica¸˜o de c´digo ca o Integra¸˜o com Depurador ca Integra¸˜o com VCSs ca http://activestate.com/ Essa IDE ´ ideal para desenvolvedores que trabalham com e aplica¸˜es Web. Ela ´ projetada especialmente para esse tipo de co e desenvolvimento. Osvaldo Santana Neto <osvaldo.neto@openbossa.org> Python WTF?
  • 10. Editores de Texto Livres Vi - http://vim.org - Editor muito conhecido no universo dos Unix. Curva de aprendizado ´ ıngreme mas extremamente poderoso. Emacs - http://gnu.org/software/emacs - Editor muito conhecido no universo dos Unix. Curva de aprendizado menos ´ ıngreme que a do Vi. O Emacs tamb´m ´ extremamente ee poderoso e ´ um dos principais rivais do Vi. e jEdit - http://jedit.org/ - Editor de textos multiplataforma tem uma riqu´ıssima biblioteca de plugins extremamente uteis ´ para desenvolvedores. Outros - SciTE, jExt, Scribes1 , Gedit, Kate, ... 1 http://scribes.sf.net/ Osvaldo Santana Neto <osvaldo.neto@openbossa.org> Python WTF?
  • 11. Editores de Texto Propriet´rios a Komodo Edit - http://activestate.com - Gr´tis - A vers˜o a a reduzida da IDE Komodo mencionada anteriormente conta apenas com as funcionalidades de editor de textos. TextMate (OS X) - http://macromates.com - e39 - O editor ´ de textos mais badalado do universo Apple. E extremamente f´cil de usar e poderoso e pode ser personalizado atrav´s de a e scripts. UltraEdit (Win) - http://ultraedit.com/ - $49.95 - Velho conhecido dos programadores Windows esse editor de textos ainda “bate um bol˜o”entre eles. a Osvaldo Santana Neto <osvaldo.neto@openbossa.org> Python WTF?
  • 12. Primeira grande quest˜o a Que IDE/Editor de textos usar? Menos ´ mais - Prefira IDEs mais simples de serem usadas. e Seu foco tem que ser “aprender Python”e n˜o a IDE. Nessa a linha de racioc´ prefira editores de textos ` IDEs. ınio a 2 . Tive que aprender a usar Vi para trabalhar Eu uso... - Vi com Linux e desde ent˜o ele supre as minhas necessidades a totalmente. Sim, ´ dif´ de aprender a us´-lo. e ıcil a Mas uma vez aprendido ele ´ o melhor. :) e E se eu usasse uma IDE? Seria Komodo com dinheiro, ... ...Eclipse sem dinheiro ou... ...Pida (com Vi) depois de pronto. :) 2 O Scribes tamb´m parece interessante e Osvaldo Santana Neto <osvaldo.neto@openbossa.org> Python WTF?
  • 13. Toolkits Gr´ficos a Crit´rios para a escolha de um Toolkit gr´fico e a Licenciamento - Eu posso usar o toolkit livremente? Se minha aplica¸˜o n˜o for livre, tenho que pagar? ca a Aparˆncia - A minha aplica¸˜o vai ter a aparˆncia padr˜o da e ca e a plataforma? Vai ficar mais feia? Mais bonita? Ferramentas - Eu vou ter que desenhar minhas telas no meu programa ou posso usar um editor para isso? Dependˆncia - Vou ter que adicionar mais uma dependˆncia e e para minha aplica¸˜o? ca Plataforma - O toolkit escolhido funciona em v´rias a plataformas? Toolkits dispon´ ıveis: Tkinter, PyGtk, PyQt, wxPython, PyFLTK, PXPy, Anygui, PySWT, PyUi, ... N˜o irei comentar sobre todos os toolkits dispon´ a ıveis http://pythonbrasil.com.br/moin.cgi/ComparacaoDeGUIs Osvaldo Santana Neto <osvaldo.neto@openbossa.org> Python WTF?
  • 14. Toolkit Gr´fico a PyGtk Licen¸a: LGPL c Aparˆncia: Gtk+ e Dependˆncias: Gtk+ e Plataformas: Win, OS X, Linux http://pygtk.org/ Editores de telas: Gazpacho, Glade Bibliotecas: Eagle, PyMVC Framework: Kiwi (MVC) Aplica¸˜es: http://www.pygtk.org/applications.html co Osvaldo Santana Neto <osvaldo.neto@openbossa.org> Python WTF?
  • 15. Toolkit Gr´fico a PyQt Licen¸a: GPL (ou Qt c Licence) Aparˆncia: Qt/Nativa e Dependˆncias: Qt e Plataformas: Win, OS X, Linux riverbankcomputing.co.uk/pyqt Editores de telas: Qt Designer Bibliotecas: PyKDE Aplica¸˜es: V´rias aplica¸˜es KDE co a co Osvaldo Santana Neto <osvaldo.neto@openbossa.org> Python WTF?
  • 16. Toolkit Gr´fico a wxPython Licen¸a: wxWidgets (BSD) c Aparˆncia: Nativa e Dependˆncias: wxWidgets e Plataformas: Win, OS X, Linux http://wxpython.org/ Editores de telas: wxGlade, wxDesigner (propriet´rio) a Aplica¸˜es: Chandler, Juice, PySoulSeek, ... co Osvaldo Santana Neto <osvaldo.neto@openbossa.org> Python WTF?
  • 17. Segunda grande quest˜o a Que toolkit gr´fico usar? a Para escolher o melhor, dˆ pesos aos items que devem ser e avaliados em um toolkit gr´fico, dˆ notas ` esses quesitos a e a para cada um dos toolkits e calcule a m´dia ponderada. e Experimente os dois melhores colocados desenvolvendo uma mini-aplica¸˜o. ca Eu uso... - PyGtk. Usei o m´todo descrito acima. e Sim, eu tive que usar isso no trabalho N˜o gosto de dois componentes GTK: TreeView e TextView. a Dˆ uma olhada no Eagle e no Kiwi e Eu n˜o gosto de desenvolver aplica¸˜es standalone. Prefiro a co desenvolvimento Web. Empresas como o Google est˜o a mostrando que o futuro est´ dentro do navegador. a Osvaldo Santana Neto <osvaldo.neto@openbossa.org> Python WTF?
  • 18. Framework Web Ao escolher um framework Web avalie os seguintes itens: Popularidade - Os frameworks Web mais usados contam com um conjunto de m´dulos e plug-ins muito maior do que os o outros. Atividade - Veja se o desenvolvimento do framework ´ ativo. e Documenta¸˜o - Exija documenta¸˜o organizada, completa e ca ca de f´cil entendimento. Conte´dos multim´ como screencasts a u ıdia tamb´m s˜o importantes. e a Experimente - Esse item ´ o mais importante. Vocˆ tem que e e experimentar os frameworks que mais te interessaram porque s´ assim vocˆ vai conseguir descobrir se ele ´ mais adequado ` o e e a sua aplica¸˜o. ca Frameworks Web: Django, TurboGears, Pylons, Zope/Plone, Webware, CherryPy, Quixote, Twisted Woven, Spyce, ... N˜o irei comentar sobre todos os frameworks existentes a http://www.pythonbrasil.com.br/moin.cgi/PythonParaWeb Osvaldo Santana Neto <osvaldo.neto@openbossa.org> Python WTF?
  • 19. Framework Web Django Documenta¸˜o: Muito ca completa e organizada Uso: Extremamente f´cil a Template: Django Persistˆncia: Django ORM e http://djangoproject.com/ O projeto Django nasceu na onda dos frameworks Web ´geis onde a o Ruby on Rails foi pioneiro. O framework ´ muito bem e implementado e a documenta¸˜o merece men¸˜o honrosa. A ca ca comunidade tamb´m ´ muito ativa. ee Osvaldo Santana Neto <osvaldo.neto@openbossa.org> Python WTF?
  • 20. Framework Web TurboGears Documenta¸˜o: ca desorganizada Uso: Extremamente f´cil a Template: Kid, Genshi ou ZPT Persistˆncia: SQLObject ou e SQLAlchemy http://turbogears.org/ O Turbogears ´ o mais f´cil de ser usado. O fato dele ser s´ um e a o aglutinador de outros frameworks tamb´m o torna muito mais e flex´ ıvel. Mas o seu defeito ´ a documenta¸˜o que ´ pouca, e ca e defasada e desorganizada. Osvaldo Santana Neto <osvaldo.neto@openbossa.org> Python WTF?
  • 21. Framework Web Plone (Zope) Documenta¸˜o: razo´vel ca a Uso: Complexo Template: ZPT Persistˆncia: ZODB / BDs e relacionais http://plone.org/ O Plone n˜o ´ exatamente um framework Web mas a sua ae flexibilidade ´ t˜o grande que o torna um concorrente destes. Ele ´ ea e desenvolvido em Zope e esse sim ´ um software grande e complexo e (mas extremamente poderoso). Osvaldo Santana Neto <osvaldo.neto@openbossa.org> Python WTF?
  • 22. Terceira grande quest˜o a Que framework Web usar? N˜o existe f´rmula m´gica para facilitar a escolha. Tem que a o a experimentar cada um deles O GvR escolheu o Django Eu uso... - TurboGears agora. Mas vou usar Django no futuro Eu usei o TurboGears porque comprei o livro e queria justificar o investimento. Eu gosto mais do sistema de mapeamento de URL do TG. Eu ainda n˜o experimentei o Pylons3 , mas ouvi boas hist´rias a o sobre ele Existe uma inten¸˜o dos desenvolvedores do Pylons e do ca TurboGears de trabalhar em conjunto. 3 http://pylonshq.com/ Osvaldo Santana Neto <osvaldo.neto@openbossa.org> Python WTF?
  • 23. Banco de Dados Evite escolher Bancos de Dados. Prefira usar frameworks que abstraiam o Banco de Dados. Exceto se o Banco de Dados for Orientado ` Objetos a Frameworks: SQLObject, SQLAlchemy, ZODB, Durus... Bancos de Dados: SQLite, MySQL, PostgreSQL, Oracle, MsSQL, ODBC, ... N˜o irei comentar sobre todos os frameworks ou Bancos de a Dados existentes http://pythonbrasil.com.br/moin.cgi/BancosDeDadosSql Osvaldo Santana Neto <osvaldo.neto@openbossa.org> Python WTF?
  • 24. Banco de Dados SQLObject Exemplo: from sqlobject import * __ co nn ect ion__ = quot; sqlite ://: memory : quot; class Permission ( SQLObject ): p e r mi s s ion_name = UnicodeCol ( length =16 , alternateID = True , a l t e r n a t e M e t h o d N a m e = ’ b y _ p e r mi s s i o n _ n a m e ’) description = UnicodeCol ( length =255) groups = RelatedJoin ( ’ Group ’ , i nt er m ed ia t eT a bl e = ’ gr oup_ perm issi on ’ , joinColumn = ’ permission_id ’ , otherColumn = ’ group_id ’) O SQLObject permite fazer o mapeamento objeto-relacional de maneira muito simples e r´pida. O banco de dados usado ´ a e definido atrav´s da vari´vel connection . O acesso ao BD fica e a transparente para o desenvolvedor que ir´ lidar com objetos na a maior parte do tempo. Osvaldo Santana Neto <osvaldo.neto@openbossa.org> Python WTF?
  • 25. Banco de Dados SQLAlchemy Exemplo: from sqlalchemy import * from sqlalchemy . ext . assignmapper import assign_mapper p e r m i s s i o n s _ t a bl e = Table ( ’ permission ’ , metadata , Column ( ’ permission_id ’ , Integer , primary_key = True ) , Column ( ’ permission_name ’ , Unicode (16) , unique = True ) , Column ( ’ description ’ , Unicode (255)) ) class Permission ( object ): pass def assign (* args , ** kw ): return assign_mapper ( session . context , * args , ** kw ) assign ( Permission , permissions_table , properties = dict ( groups = relation ( Group , secondary = group_permission_table , backref = ’ permissions ’ ))) O SQLAlchemy usa um outro sistema de trabalho que d´ mais a flexibilidade ao mapeamento objeto-relacional. Isso o torna ideal para o desenvolvimento de aplica¸˜es que precisar˜o usar bancos co a de dados legados. Osvaldo Santana Neto <osvaldo.neto@openbossa.org> Python WTF?
  • 26. Banco de Dados Outras alternativas ZODB - Banco de Dados orientado ` objetos, n˜o utiliza o a a modelo relacional de banco de dados. DB-API - API Python padronizada para acesso ` bancos de a dados relacionais. SQLite - Acompanha o Python 2.5 MySQL - mysqldb PostgreSQL - psycopg2 Oracle - cx oracle Exemplo com MySQL: # Para conectar outros bancos , somente essa parte muda import MySQLdb con = MySQLdb . connect ( ’ servidor ’ , ’ usuario ’ , ’ senha ’) con . select_db ( ’ banco de dados ’) # Fim cursor = con . cursor () cursor . execute ( ’ ALGUM SQL ’) con . close () Osvaldo Santana Neto <osvaldo.neto@openbossa.org> Python WTF?
  • 27. Quarta grande quest˜o a Que Banco de Dados usar? A regra de outro aqui ´: afaste-se o m´ximo poss´ do e a ıvel banco de dados. Se for usar um banco de dados relacional use um mapeador objeto-relacional Eu uso... - SQLAlchemy, mas sonho e poder usar s´ o ZODB o O SQLAlchemy parece ser melhor mantido que o SQLObject e sua documenta¸˜o impressiona pela qualidade ca O ZODB tem fama de n˜o escalar bem e n˜o ´ bem suportado a ae por outros frameworks que n˜o o Zope a Como o SQLite acompanha o Python ele se mostra uma excelente alternativa para o desenvolvimento ou para a execu¸˜o de testes (usando o banco de dados em mem´ria). ca o Osvaldo Santana Neto <osvaldo.neto@openbossa.org> Python WTF?
  • 28. Quinta grande quest˜o a Qual o sentido da vida, do universo e de tudo mais? Perguntas? http://www.indt.org.br/ Osvaldo Santana Neto <osvaldo.neto@openbossa.org> Python WTF?