0
Python WTF?
                tamb´m conhecido como Python What a FAQ?
                    e


        Osvaldo Santana Neto ...
Python
Uma introdu¸˜o obrigat´ria
           ca         o




           Criada por Guido van Rossum em 1991
           No...
Python
Um exemplo obrigat´rio
                  o

    class Component ( object ):
        def __init__ ( self , * kargs )...
IDEs

          Linguagem de Programa¸˜o n˜o ´ IDE
                               ca a e
          IDE n˜o ´ linguagem de ...
IDEs Livres

                                                         Eclipse
                                            ...
IDEs Livres

                                                         Pida
                                               ...
IDEs Livres

                                                         Boa-Constructor
                                    ...
IDEs Propriet´rias
             a

                                                         Wing IDE
                     ...
IDEs Propriet´rias
             a

                                                         Komodo IDE
                   ...
Editores de Texto Livres


            Vi - http://vim.org - Editor muito conhecido no universo
            dos Unix. Curv...
Editores de Texto Propriet´rios
                          a



          Komodo Edit - http://activestate.com - Gr´tis - A...
Primeira grande quest˜o
                     a
Que IDE/Editor de textos usar?



             Menos ´ mais - Prefira IDEs m...
Toolkits Gr´ficos
           a

          Crit´rios para a escolha de um Toolkit gr´fico
              e                    ...
Toolkit Gr´fico
          a

                                                         PyGtk
                               ...
Toolkit Gr´fico
          a

                                                         PyQt
                                ...
Toolkit Gr´fico
          a


                                                         wxPython
                           ...
Segunda grande quest˜o
                    a
Que toolkit gr´fico usar?
              a



           Para escolher o melhor...
Framework Web

          Ao escolher um framework Web avalie os seguintes itens:
                 Popularidade - Os framew...
Framework Web

                                                         Django
                                           ...
Framework Web

                                                         TurboGears
                                       ...
Framework Web

                                                         Plone (Zope)
                                     ...
Terceira grande quest˜o
                     a
Que framework Web usar?



             N˜o existe f´rmula m´gica para faci...
Banco de Dados



          Evite escolher Bancos de Dados. Prefira usar frameworks que
          abstraiam o Banco de Dado...
Banco de Dados
SQLObject



    Exemplo:
    from sqlobject import *
    __ co nn ect ion__ = quot; sqlite ://: memory : q...
Banco de Dados
SQLAlchemy


    Exemplo:
    from sqlalchemy import *
    from sqlalchemy . ext . assignmapper import assi...
Banco de Dados
Outras alternativas


            ZODB - Banco de Dados orientado ` objetos, n˜o utiliza o
                ...
Quarta grande quest˜o
                   a
Que Banco de Dados usar?



           A regra de outro aqui ´: afaste-se o m´x...
Quinta grande quest˜o
                   a
Qual o sentido da vida, do universo e de tudo mais?




                       ...
Upcoming SlideShare
Loading in...5
×

Python WTFAQ?

3,108

Published on

This presentation answer the Frequent Asked Questions.

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,108
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
105
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Transcript of "Python WTFAQ?"

  1. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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?
  1. A particular slide catching your eye?

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

×