Python para Programadores

4,156 views

Published on

Um mini-curso rᰩdo de Python para programadores que jᠳabem programar. Apresenta uma vis㯠geral da sintaxe da linguagem.

Published in: Technology
1 Comment
2 Likes
Statistics
Notes
No Downloads
Views
Total views
4,156
On SlideShare
0
From Embeds
0
Number of Embeds
2,174
Actions
Shares
0
Downloads
119
Comments
1
Likes
2
Embeds 0
No embeds

No notes for slide

Python para Programadores

  1. 1. Python para programadores <ul><ul><li>Quick Crash Fast Introductory Course :) </li></ul></ul><ul><ul><li>Osvaldo Santana Neto </li></ul></ul><ul><ul><li>Baseado no curso de: </li></ul></ul><ul><ul><li>Alex Augusto da Luz dos Santos </li></ul></ul>
  2. 2. Histórico da Linguagem <ul><li>Guido van Rossum </li></ul><ul><li>ABC </li></ul><ul><li>Criada em 1991 </li></ul><ul><li>Monty Python Flying Circus </li></ul>
  3. 3. Características <ul><li>Interpretada + Compilada </li></ul><ul><li>Orientada à objetos </li></ul><ul><li>Suporte a outros paradigmas </li></ul><ul><ul><li>Funcional </li></ul></ul><ul><ul><li>Estrutural </li></ul></ul><ul><li>Multiplataforma </li></ul><ul><ul><li>Unix/Linux (Maemo :) ), Windows, Mac OS, etc. </li></ul></ul><ul><li>Dinamicamente tipada </li></ul><ul><ul><li>Não necessita declaração de tipo pois o tipo fica ligado ao objeto </li></ul></ul><ul><ul><li>Fortemente tipada (diferente do tipo variant do Visual Basic) </li></ul></ul>
  4. 4. Características <ul><li>Licença Compatível com BSD (e com GPL) </li></ul><ul><li>Conjunto completo de Estruturas de dados nativos na linguagem </li></ul><ul><ul><li>Listas, Tuplas, Strings, Dicionários, Iteradores, ... </li></ul></ul><ul><li>Ambiente Interativo </li></ul><ul><li>Documentação pertencendo ao código (docstrings) </li></ul>
  5. 5. Características <ul><li>Fácil integração com outras linguagens </li></ul><ul><ul><li>C / C++, Java, Lua, ... </li></ul></ul><ul><li>Exemplo em C: </li></ul>#include <Python.h> static PyObject * spam_system(PyObject *self, PyObject *args) { const char *command; int sts; if (!PyArg_ParseTuple(args, &quot;s&quot; , &command)) return NULL; sts = system(command); return Py_BuildValue( &quot;i&quot; , sts); } }
  6. 6. Comentários Genéricos <ul><li>Não é necessário declarar variáveis </li></ul><ul><li>Blocos de código são definidos pela indentação (não precisa de “{“ nem de “}”) </li></ul><ul><li>O “self” é passado por parâmetro para os métodos </li></ul><ul><li>Não é necessário compilar código </li></ul>
  7. 7. Hierarquia de Classes
  8. 8. Tipos mais importantes <ul><li>Inteiros: </li></ul><ul><ul><li>Exemplos: </li></ul></ul><ul><ul><ul><li>256, 123456789L, 1.5, 1e-45, 53+12j </li></ul></ul></ul><ul><ul><li>Operações: </li></ul></ul><ul><ul><ul><li>256 + 54, 32 * 3, 55 ** 2, 128 | 123, ... </li></ul></ul></ul>
  9. 9. Tipos mais importantes <ul><li>Strings: </li></ul><ul><ul><li>Exemplos: </li></ul></ul><ul><ul><ul><li>&quot;string normal&quot;, u&quot;string unicode&quot;, r&quot;string expressao regular&quot;, &quot;&quot;&quot;string multilinha&quot;&quot;&quot;, 'string', ... </li></ul></ul></ul><ul><ul><li>Operações (dica: use o dir() ): </li></ul></ul><ul><ul><ul><li>&quot;spam&quot; * 3 # resultado: &quot;spamspamspam&quot; </li></ul></ul></ul><ul><ul><ul><li>&quot;spam&quot; + &quot;eggs&quot; # resultado: &quot;spameggs&quot; </li></ul></ul></ul><ul><ul><ul><li>&quot;spam%s%d&quot; % (&quot;eggs&quot;, 256) # resultado: &quot;spameggs256&quot; </li></ul></ul></ul><ul><ul><ul><li>métodos: upper(), lower(), capitalize(), strip(), split(), join(), ..., ... </li></ul></ul></ul><ul><ul><ul><li>slicing (veremos adiante) </li></ul></ul></ul>
  10. 10. Tipos mais importantes <ul><li>Listas e Tuplas </li></ul><ul><ul><li>Exemplos: </li></ul></ul><ul><ul><ul><li>[ &quot;spam&quot;, &quot;eggs&quot; ] </li></ul></ul></ul><ul><ul><ul><li>( &quot;spam&quot;, &quot;eggs&quot; ) </li></ul></ul></ul><ul><ul><li>Operações: </li></ul></ul><ul><ul><ul><li>a,b,c = (1, 2, 3) # resulta: a=1, b=2, c=3 </li></ul></ul></ul><ul><ul><ul><li>[1, 2, 3]+[4,5] # resulta: [1, 2, 3, 4, 5] </li></ul></ul></ul><ul><ul><ul><li>[1, 2, 3].append(4) # resulta: [1, 2, 3, 4 ] </li></ul></ul></ul><ul><ul><ul><li>métodos: append(), extend(), pop(), reverse(), sort(), insert(), ... </li></ul></ul></ul><ul><ul><ul><li>slicing </li></ul></ul></ul>
  11. 11. Tipos mais importantes <ul><li>Dicionários </li></ul><ul><ul><li>Exemplo: </li></ul></ul><ul><ul><ul><li>{ &quot;spam&quot;: 'eggs' } </li></ul></ul></ul><ul><ul><li>Operações: </li></ul></ul><ul><ul><ul><li>dic[&quot;spam&quot;] # resulta: 'eggs' </li></ul></ul></ul><ul><ul><ul><li>métodos: has_key(), get(), update(), items(), keys(), ... </li></ul></ul></ul>
  12. 12. Tipos mais importantes <ul><li>Arquivos (file) </li></ul><ul><ul><li>Exemplos: </li></ul></ul><ul><ul><ul><li>f = open(&quot;arquivo.txt&quot;, &quot;r&quot;) </li></ul></ul></ul><ul><ul><ul><li>f = file(&quot;arq.bin&quot;, &quot;wb&quot;) </li></ul></ul></ul><ul><ul><li>Operações: </li></ul></ul><ul><ul><ul><li>for linha in open(&quot;arq.txt&quot;): pass </li></ul></ul></ul><ul><ul><ul><li>métodos: read(), readline(), write(), readlines(), close(), ... </li></ul></ul></ul>
  13. 13. Slicing <ul><li>&quot;Fatia&quot; uma seqüência </li></ul><ul><li>Sintaxe: </li></ul><ul><ul><li>sequencia[inicio:fim:step] </li></ul></ul><ul><li>Exemplos: </li></ul><ul><ul><li>&quot;spameggs&quot;[1] # &quot;p&quot; </li></ul></ul><ul><ul><li>&quot;spameggs&quot;[-1] # &quot;s&quot; </li></ul></ul><ul><ul><li>&quot;spameggs&quot;[1:5] # &quot;pame&quot; </li></ul></ul><ul><ul><li>&quot;spameggs&quot;[1:] # &quot;pameggs&quot; </li></ul></ul><ul><ul><li>&quot;spameggs&quot;[1:-1] # &quot;pamegg&quot; </li></ul></ul><ul><ul><li>&quot;spameggs&quot;[::2] # &quot;saeg&quot; </li></ul></ul><ul><ul><li>&quot;spameggs&quot;[::-1] # &quot;sggemaps&quot; </li></ul></ul>
  14. 14. Comandos <ul><li>Condicional: </li></ul><ul><ul><li>if condicao: </li></ul></ul><ul><ul><ul><li># comandos </li></ul></ul></ul><ul><ul><li>elif condicao: </li></ul></ul><ul><ul><ul><li># comandos </li></ul></ul></ul><ul><ul><li>else: </li></ul></ul><ul><ul><ul><li># comandos </li></ul></ul></ul><ul><ul><li>Não precisa dos parêntesis (&quot; if (condicao): &quot;) que foge ao style guide da linguagem </li></ul></ul><ul><ul><li>Não é permitido atribuição: &quot; if f=x(1): &quot; </li></ul></ul>
  15. 15. Comandos <ul><li>Repetição: </li></ul><ul><ul><li>while condicao: </li></ul></ul><ul><ul><ul><li># comandos </li></ul></ul></ul><ul><ul><ul><li>... continue </li></ul></ul></ul><ul><ul><ul><li>... break </li></ul></ul></ul><ul><ul><li>else : </li></ul></ul><ul><ul><ul><li># comandos </li></ul></ul></ul>
  16. 16. Comandos <ul><li>Iteração: </li></ul><ul><ul><li>for elemento in sequencia: </li></ul></ul><ul><ul><ul><li># comandos </li></ul></ul></ul><ul><ul><li>else : </li></ul></ul><ul><ul><ul><li># comandos </li></ul></ul></ul><ul><li>Exemplo: </li></ul><ul><ul><li>for i in range(10): </li></ul></ul><ul><ul><ul><li>print i, </li></ul></ul></ul><ul><ul><li># imprimirá: 0 1 2 3 4 5 6 7 8 9 </li></ul></ul>
  17. 17. Comandos <ul><li>Excessões: </li></ul><ul><ul><li>try : </li></ul></ul><ul><ul><ul><li># comandos </li></ul></ul></ul><ul><ul><li>except Exception , e: </li></ul></ul><ul><ul><ul><li>raise NewException , &quot;spam!&quot; </li></ul></ul></ul>
  18. 18. Funções <ul><li>Definição: </li></ul><ul><ul><li>def f(parametro): </li></ul></ul><ul><ul><ul><li>valor = &quot;x&quot; </li></ul></ul></ul><ul><ul><ul><li>return valor </li></ul></ul></ul><ul><ul><li>def f(x, parm= 2 ): # parametro default </li></ul></ul><ul><ul><ul><li>return parm </li></ul></ul></ul>
  19. 19. Funções <ul><li>Definição: </li></ul><ul><ul><li>def f(*parms): </li></ul></ul><ul><ul><ul><li>return parms </li></ul></ul></ul><ul><ul><li>print f( &quot;spam&quot; , &quot;eggs&quot; ) </li></ul></ul><ul><ul><li># ('spam', 'eggs') </li></ul></ul>
  20. 20. Funções <ul><li>Definição: </li></ul><ul><ul><li>def f(**kargs): </li></ul></ul><ul><ul><ul><li>return kargs </li></ul></ul></ul><ul><ul><li>print f(x= 1 , y= 2 ) </li></ul></ul><ul><ul><li># {'x': 1, 'y': 2} </li></ul></ul>
  21. 21. Orientação à objetos <ul><li>Definição de classe: </li></ul><ul><ul><li>class spam( object ): pass </li></ul></ul><ul><ul><li>Construtor: &quot; __init__() &quot; </li></ul></ul><ul><li>Exemplo: </li></ul><ul><ul><li>class spam( object ): </li></ul></ul><ul><ul><ul><li>def __init__( self , parm): </li></ul></ul></ul><ul><ul><ul><ul><li>self.attr = parm </li></ul></ul></ul></ul><ul><ul><li>eggs = spam( &quot;foo&quot; ) # instancia um objeto spam </li></ul></ul><ul><li>O parâmetro self deve ser explicitamente declarado nos métodos. </li></ul>
  22. 22. Módulos <ul><li>A biblioteca do Python vem organizada em módulos e packages. </li></ul><ul><li>Importando em namespace separado: </li></ul><ul><ul><li>import modulo </li></ul></ul><ul><li>Importando para o namespace corrente: </li></ul><ul><ul><li>from modulo import * </li></ul></ul>
  23. 23. Módulos <ul><li>Exemplos: </li></ul><ul><ul><li>import sys </li></ul></ul><ul><ul><li>import os </li></ul></ul><ul><ul><li>from mail import * </li></ul></ul><ul><ul><li>from modulo import Classe </li></ul></ul><ul><ul><li>import pacote.subpacote.modulo </li></ul></ul><ul><ul><li>from pacote import * </li></ul></ul><ul><li>Existem dezenas de módulos builtin ao Python e mais centenas de módulos de terceiros. </li></ul><ul><li>RUDA: Cita os módulos mais importantes </li></ul>
  24. 24. Módulos mais importantes <ul><li>sys – funcionalidades do ambiente Python </li></ul><ul><li>os – funcionalidades do sistema operacional </li></ul><ul><li>re – módulo de expressões regulares </li></ul><ul><li>httplib – utilização de HTTP </li></ul><ul><li>gzip – compressão </li></ul><ul><li>xml – parsers xml </li></ul><ul><li>sha, md5, ... - segurança / digests </li></ul><ul><li>imaplib, poplib, telnetlib, ... - protocolos de rede </li></ul><ul><li>... entre outros </li></ul>
  25. 25. Mais informações <ul><li>www.pythonbrasil.com.br </li></ul><ul><li>www.python.org </li></ul><ul><li>diretamente com o Osvaldo (ou Rudá) </li></ul><ul><li>www.google.com :) </li></ul><ul><li>Aguarde a continuação deste mini-curso... </li></ul><ul><li>(PyGTK ou Pygame) </li></ul>

×