Python WTFAQ?
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

Python WTFAQ?

  • 4,926 views
Uploaded on

This presentation answer the Frequent Asked Questions.

This presentation answer the Frequent Asked Questions.

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
4,926
On Slideshare
4,903
From Embeds
23
Number of Embeds
6

Actions

Shares
Downloads
104
Comments
0
Likes
1

Embeds 23

http://www.slideshare.net 13
http://localhost 3
http://www.linkedin.com 3
http://www.pythonologia.org 2
http://blog.triveos.com.br 1
http://osantana.me 1

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 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?