Your SlideShare is downloading. ×
0
Python para Programadores
Python para Programadores
Python para Programadores
Python para Programadores
Python para Programadores
Python para Programadores
Python para Programadores
Python para Programadores
Python para Programadores
Python para Programadores
Python para Programadores
Python para Programadores
Python para Programadores
Python para Programadores
Python para Programadores
Python para Programadores
Python para Programadores
Python para Programadores
Python para Programadores
Python para Programadores
Python para Programadores
Python para Programadores
Python para Programadores
Python para Programadores
Python para Programadores
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Python para Programadores

3,830

Published on

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

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
3,830
On Slideshare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
118
Comments
1
Likes
2
Embeds 0
No embeds

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 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. 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. 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. 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. 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 &lt;Python.h&gt; static PyObject * spam_system(PyObject *self, PyObject *args) { const char *command; int sts; if (!PyArg_ParseTuple(args, &amp;quot;s&amp;quot; , &amp;command)) return NULL; sts = system(command); return Py_BuildValue( &amp;quot;i&amp;quot; , sts); } }
  • 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. Hierarquia de Classes
  • 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. Tipos mais importantes <ul><li>Strings: </li></ul><ul><ul><li>Exemplos: </li></ul></ul><ul><ul><ul><li>&amp;quot;string normal&amp;quot;, u&amp;quot;string unicode&amp;quot;, r&amp;quot;string expressao regular&amp;quot;, &amp;quot;&amp;quot;&amp;quot;string multilinha&amp;quot;&amp;quot;&amp;quot;, &apos;string&apos;, ... </li></ul></ul></ul><ul><ul><li>Operações (dica: use o dir() ): </li></ul></ul><ul><ul><ul><li>&amp;quot;spam&amp;quot; * 3 # resultado: &amp;quot;spamspamspam&amp;quot; </li></ul></ul></ul><ul><ul><ul><li>&amp;quot;spam&amp;quot; + &amp;quot;eggs&amp;quot; # resultado: &amp;quot;spameggs&amp;quot; </li></ul></ul></ul><ul><ul><ul><li>&amp;quot;spam%s%d&amp;quot; % (&amp;quot;eggs&amp;quot;, 256) # resultado: &amp;quot;spameggs256&amp;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. Tipos mais importantes <ul><li>Listas e Tuplas </li></ul><ul><ul><li>Exemplos: </li></ul></ul><ul><ul><ul><li>[ &amp;quot;spam&amp;quot;, &amp;quot;eggs&amp;quot; ] </li></ul></ul></ul><ul><ul><ul><li>( &amp;quot;spam&amp;quot;, &amp;quot;eggs&amp;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. Tipos mais importantes <ul><li>Dicionários </li></ul><ul><ul><li>Exemplo: </li></ul></ul><ul><ul><ul><li>{ &amp;quot;spam&amp;quot;: &apos;eggs&apos; } </li></ul></ul></ul><ul><ul><li>Operações: </li></ul></ul><ul><ul><ul><li>dic[&amp;quot;spam&amp;quot;] # resulta: &apos;eggs&apos; </li></ul></ul></ul><ul><ul><ul><li>métodos: has_key(), get(), update(), items(), keys(), ... </li></ul></ul></ul>
  • 12. Tipos mais importantes <ul><li>Arquivos (file) </li></ul><ul><ul><li>Exemplos: </li></ul></ul><ul><ul><ul><li>f = open(&amp;quot;arquivo.txt&amp;quot;, &amp;quot;r&amp;quot;) </li></ul></ul></ul><ul><ul><ul><li>f = file(&amp;quot;arq.bin&amp;quot;, &amp;quot;wb&amp;quot;) </li></ul></ul></ul><ul><ul><li>Operações: </li></ul></ul><ul><ul><ul><li>for linha in open(&amp;quot;arq.txt&amp;quot;): pass </li></ul></ul></ul><ul><ul><ul><li>métodos: read(), readline(), write(), readlines(), close(), ... </li></ul></ul></ul>
  • 13. Slicing <ul><li>&amp;quot;Fatia&amp;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>&amp;quot;spameggs&amp;quot;[1] # &amp;quot;p&amp;quot; </li></ul></ul><ul><ul><li>&amp;quot;spameggs&amp;quot;[-1] # &amp;quot;s&amp;quot; </li></ul></ul><ul><ul><li>&amp;quot;spameggs&amp;quot;[1:5] # &amp;quot;pame&amp;quot; </li></ul></ul><ul><ul><li>&amp;quot;spameggs&amp;quot;[1:] # &amp;quot;pameggs&amp;quot; </li></ul></ul><ul><ul><li>&amp;quot;spameggs&amp;quot;[1:-1] # &amp;quot;pamegg&amp;quot; </li></ul></ul><ul><ul><li>&amp;quot;spameggs&amp;quot;[::2] # &amp;quot;saeg&amp;quot; </li></ul></ul><ul><ul><li>&amp;quot;spameggs&amp;quot;[::-1] # &amp;quot;sggemaps&amp;quot; </li></ul></ul>
  • 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 (&amp;quot; if (condicao): &amp;quot;) que foge ao style guide da linguagem </li></ul></ul><ul><ul><li>Não é permitido atribuição: &amp;quot; if f=x(1): &amp;quot; </li></ul></ul>
  • 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. 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. 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 , &amp;quot;spam!&amp;quot; </li></ul></ul></ul>
  • 18. Funções <ul><li>Definição: </li></ul><ul><ul><li>def f(parametro): </li></ul></ul><ul><ul><ul><li>valor = &amp;quot;x&amp;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. 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( &amp;quot;spam&amp;quot; , &amp;quot;eggs&amp;quot; ) </li></ul></ul><ul><ul><li># (&apos;spam&apos;, &apos;eggs&apos;) </li></ul></ul>
  • 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># {&apos;x&apos;: 1, &apos;y&apos;: 2} </li></ul></ul>
  • 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: &amp;quot; __init__() &amp;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( &amp;quot;foo&amp;quot; ) # instancia um objeto spam </li></ul></ul><ul><li>O parâmetro self deve ser explicitamente declarado nos métodos. </li></ul>
  • 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. 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. 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. 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>

×