0
$whoami
Marido
Pai de um adolescente e 8 gatos
Ok, 3 cães também...
Apaixonado por programação (desde os 12)
Cinéfilo
Bac...
Bjarne
Stroustrup, C++
creator
é uma linguagem
interpretada, interativa,
funcional, orientada a
objetos, dinamicamente
tipada e com gerenciamento
automát...
Entre todas as
linguagens que
aprendi, Python é a
que menos
interfere entre mim e
o problema. É a mais
efetiva para traduz...
Life is Better
Without Braces.
Bruce Eckel
Python is everywhere at
ILM. It's used to extend the
capabilities of our
applications, as well as
providing the glue betwe...
Python has been an
important part of Google
since the beginning, and
remains so as the system
grows and evolves. Today
doz...
Course-Builder, Google
Comparação normalizada
http://www.tiobe.com
Guido van Rossum é referido
pela comunidade python,
desde 1995, como
Benevolent Dictator For Life
(BDFL)
De dezembro de 20...
Não veio da cobra!
"Over six years ago, in December
1989, I was looking for a "hobby"
programming project that would keep
...
NADA!
Python foi desenvolvido como um
projeto open source, sem fins
lucrativos e gerenciado pela PSF
(Python Software Foun...
Para obter o interpretador Python
acessar
http://www.python.org/download/
Versões
Python 2.7.5 foi liberada em 15 de maio
...
http://www.python.org/about/success/
Google
NASA
Yahoo
InfoSeek
MCI Worldcom
IBM
Higway
Industrial Light and Magic
AstraZe...
Governo Federal
Petrobras
Serpro
Embratel
Globo.com
StarOne
Conectiva
CPqD
Async
Haxent
UTFPR
...
Vários projetos da comunidade Software
Livre
Blender
LibreOffice
Zope/Plone
MoinMoin
Mailman
BitTorrent
Chandler
Gimp
Plon...
Canivete suíço
Web e Internet
Database
GUIs
Científico e processamento numérico
Educação
Programação de rede
Construção e ...
Unix: HP-UX, Solaris ...
Linux (frequentemente pré-instalada)
Mac OSX (sempre pré-instalada)
Windows: 9x, ME, 2K, XP, Vist...
SIM: Compilação Híbrida!
Como ficou “famoso” com Java, programas Python
são compilados, porém para uma linguagem
intermedi...
Prazer em lhe conhecer!
Cython
onde existir um compilador C ISO/IEC 9899:1990
Jython
máquina virtual Java
PyPy
Python impl...
De altíssimo nível e
poderosa
Elegante, com sintaxe
simples e concisa
Fácil de aprender,
“cabe” no seu cérebro !
Multipara...
Extensa biblioteca padrão
Um módulo para o que você
precisar
sys, random, re, datetime,
calendar, csv, os, webbrowser,
str...
Código é muito mais lido que escrito!
Readability importa! (muito)
Python te ajuda a escrever código mais legível
Python é case sensitive
Linhas são delimitadas por enter
Tipagem é forte e dinâmica
Não há declaração de variáveis como em...
Inúmeros
Geany
Vim
Aptana
Komodo
NetBeans
PyCharm
PyDev (Eclipse)
Wing IDE
Pyshield
Spyder
MS-Visual Studio
Etc.
Ninja IDE (Ninja Is Not Just Another IDE)
Multiplataforma
Editor de código poderoso
Gerenciamento de Projetos
Plugins
http...
Em Python, variáveis são referências a
objetos
não guardam os objetos em si
não têm tipo, mas os objetos aos quais elas se...
Variáveis não são “caixas” com valores
Variáveis são “rótulos” colados em objetos
São criadas pela atribuição
Operador =
Variáveis são referências a objetos na
memória
Atribuição não gera uma cópia do objeto
Uma referência (variável) pode ser liberada
Usando del
Não existindo mais referênc...
Programas maiores codificados em
arquivos (scripts)
normalmente usando um IDE
extensão py
O script pode ser executado dire...
Módulos são arquivos que contêm qualquer
estrutura python (classes, funções, variáveis,
etc.) e podem ser importados nos p...
Funções importantes são disponibilizadas em
módulos da biblioteca padrão
Ex.: módulo math tem funções como sin, cos, exp e...
Para usar os elementos de um módulo,
comando import
import modulo
from modulo import nome1,...,nomen
from modulo import *
...
Exemplos
Se um programa pode ser executado isolado
ou importado dentro de outro, como distinguir
as duas situações?
O módulo princi...
Digitar help() no interpretador abre o help
interativo
Use quit para sair
Python Enhancement Proposal
São documentos padronizados da comunidade
Python
Uma PEP propõe um padrão, melhoria,
funcional...
Um bloco inicia com :
A estrutura dos blocos é definida pela
indentação
A PEP #8 - Style Guide for Python Code - sugere
4 ...
A partir do caractere #, o interpretador ignora
o restante do código até o final da linha
Isso não vale dentro de strings
...
Tipos básicos
int = normalmente 32 bits
long = limitado ao tamanho da memória
Há promoção automática de int para long
Divi...
Também são tipos numéricos básicos
float = ponto flutuante de 32 bits
complex= para números complexos
Construtores ou funções de conversão
int (n)
float (n)
complex (n)
abs (n)
Básicos
+, -, *, /, **
Inteiros
%, //
Bit a Bit
&, |, ^, ~, >>, <<
Módulo math e outros
Representa o valor nulo
Equivalente a False em operações booleanas
Aplicações típicas
Valor default em parâmetros de funçõ...
Constantes True e False
Ocorre conversão automática entre
tipos
Conversão explícita pode ser feita
com bool(x)
Relacionais
>, <, >=, <=, ==, !=, is, is not
Sempre retornam um bool
Lógicos
and, or, not
str – Sequência de bytes, com a acentuação
dependente de encoding
Delimitadas por aspas, apóstrofo ou três aspas ou
três a...
Codificações
iso-8859-1: padrão ISO Latin-1
iso-8859-15: idem, com símbolo € (Euro)
cp1252: MS-Windows codepage 1252
ISO L...
Não existe um tipo próprio para caractere,
como o char de C
Um caractere é um string de comprimento 1
A função chr pode se...
Caracteres Unicode também podem ser
acessados pelo seu nome com scape N{}
Constantes str ou unicode são interpretadas
segundo a codificação declarada num
comentário especial no início do arquivo ....
Use caracteres de formatação, como na
printf da linguagem C
%s, %d, %f são os mais comuns
Usando type
Usando type
Tuplas são sequências
imutáveis
não é possível modificar as
referências contidas na tupla
Tuplas constantes são
representa...
Tuplas são sequências imutáveis
Tuplas constantes são representadas como
sequências de itens entre parênteses
CUIDADO: em ...
Listas são coleções de itens heterogêneos que
podem ser acessados sequencialmente ou indexados
São mutáveis
Constantes lis...
Facilmente você pode criar uma lista numérica com
range([inicio,] fim[, passo])
Retorna uma sequência numérica conforme os...
Os tipos string, lista, tupla, buffer são
sequências
Coleção ordenada e iterável de itens
Operações
s[i] = acessa um item
...
Operações de slicing
s[a:b] cópia de a (inclusive) até b (exclusive)
s[a:] cópia a partir de a (inclusive)
s[:b] cópia até...
Strings são sequências e seus itens individuais
podem ser acessados
Contudo, são imutáveis
A inserção pode ser feita com slicing
Ou ainda
Dicionários são estruturas de dados que
implementam mapeamentos
coleções de pares chave:valor que podem ser
recuperados pe...
O tipo set permite agrupar conjuntos de
valores
Mutável e permite operações típicas
Entrada com input
Saída com print
if
if (expressao):
bloco
[elif (expressao):
bloco]
[else:
bloco]
exemplo
for
for variavel in sequencia:
bloco
[else:
bloco]
while
while (expressao):
bloco
[else:
bloco]
Exemplo1
Exemplo2
Modularizam o código
Comando def inicia a definição de uma função
Comando return marca o fim da execução da função
e defin...
Exemplo
Ei, não vamos complicar!
Estourar a pilha de execução é “fácil”
E aí, tentou fat(1000)?
Mudando o tamanho da pilha de ativação
Funções que possuem a
instrução yeld são
Generators
Retornam objetos iterators
É mantida uma memória do último
valor retor...
Classe file representam arquivos
Use a função open (ou construtor file(), são
sinônimos)
abrir arquivo binário para leitur...
Cuidado: arquivo é uma sequência de bytes!
Deve ser interpretada por uma codificação de caracteres
Ex.: tentativa de ler u...
Boa prática: especificar a codificação na abertura!
O padrão é dependente da plataforma
Criando um bitmap de 2x2 pixels
Não entraremos em detalhes (header, dib,
data, etc.) do formato bmp
NÃO FAÇA isso em sã co...
Alterando o nosso bmp de 2x2 pixels
NÃO FAÇA isso em sã consciência!
Existem bibliotecas especializadas para tratamento de...
Operações de E/S são realizadas pelo SO
O módulo os possui diversas variáveis e funções que
ajudam um programa Python adeq...
Módulo CSV (Comma-Separated Values)
Bibliotecas nativas para compressão
Baterias gzip, bzip2, pkzip, etc.
Exceção é um objeto que é lançado
(raised/thrown) quando ocorre uma situação
inesperada
Esse objeto é capturado por um tra...
Considere o pseudocódigo
Execute uma tarefa
Se a tarefa anterior não foi executada
corretamente
Execute o processamento de...
Mistura a lógica e o tratamento de erros!
Pode tornar o programa difícil de ler/depurar
Tratamento de exceções remove o tr...
Em Python, tratadores de exceção (exception
handlers) são blocos na forma
try:
suite1
except exceptions:
suite2
else:
suit...
Foco no “caminho feliz”
Cláusula finally
Lembra? Multiparadigma! Inclui Orientação a
Objetos
Tudo em python é objeto. Mesmo!
Simplesmente defina a classe e use-a!
Classe (class) é um tipo de dados especial que
define como construir objetos
Também ...
Não se desespere!
para os métodos, defina funções dentro do escopo
de class
A função __init__ serve como construtor
Nos métodos, o parâmetro self referencia a
instância atual
NÃO É passado explicita...
Não é necessário liberar objetos
explicitamente
Esqueça free ou delete!
Coletor automático de lixo, lembra?
Isso funciona, mas com sotaque
Métodos especiais permitem implementar
operadores
Têm nomes iniciando e finalizando com __
Herança, coleções, métodos de
classe, métodos estáticos, atributos
“privados”, propriedades,
decoradores, coleções, etc.
M...
Quão rápido roda meu código?
Em linha de comando, chamar o profiler
python –m profile arq.py
Quão rápido roda meu código?
Em linha de comando, chamar o debugger
python –m pdb arq.py
TCL-TK é parte integrante, via tkinter
Diversos outros bindings de frameworks
wxWidgets
QT
GTK
etc.
“List comprehensions”
Produz uma lista a partir de qualquer objeto iterável
Sintaxe inspirada em Haskell
Inverter a ordem das cartas
baralho.reverse()
Tirar a carta do topo
baralho.pop()
Adicionar 4 coringas
baralho.extend([‘Co...
Baterias: urllib e re
Python Training #1 - ed5
Python Training #1 - ed5
Python Training #1 - ed5
Python Training #1 - ed5
Python Training #1 - ed5
Python Training #1 - ed5
Python Training #1 - ed5
Python Training #1 - ed5
Python Training #1 - ed5
Python Training #1 - ed5
Python Training #1 - ed5
Python Training #1 - ed5
Python Training #1 - ed5
Python Training #1 - ed5
Python Training #1 - ed5
Python Training #1 - ed5
Python Training #1 - ed5
Python Training #1 - ed5
Python Training #1 - ed5
Python Training #1 - ed5
Upcoming SlideShare
Loading in...5
×

Python Training #1 - ed5

919

Published on

Minicurso em 19/09, durante o V EPAC (Encontro Paranaense de Computação) http://www.inf.unioeste.br/epac/

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
919
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
43
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Transcript of "Python Training #1 - ed5"

  1. 1. $whoami Marido Pai de um adolescente e 8 gatos Ok, 3 cães também... Apaixonado por programação (desde os 12) Cinéfilo Bacharel em Informática (Unioeste, 1999) Mestre em Ciência da Computação (UFSC, 2002) Professor na UTFPR-TD (desde 2009)
  2. 2. Bjarne Stroustrup, C++ creator
  3. 3. é uma linguagem interpretada, interativa, funcional, orientada a objetos, dinamicamente tipada e com gerenciamento automático de memória Similar, em certos aspectos, a Perl, Ruby, Scheme, Smalltalk e Tcl
  4. 4. Entre todas as linguagens que aprendi, Python é a que menos interfere entre mim e o problema. É a mais efetiva para traduzir pensamentos em ações. Eric Raymond
  5. 5. Life is Better Without Braces. Bruce Eckel
  6. 6. Python is everywhere at ILM. It's used to extend the capabilities of our applications, as well as providing the glue between them. Every CG image we create has involved Python somewhere in the process. Philip Peterson, Principal Engineer,  Research & Development, Industrial Light &  Magic
  7. 7. Python has been an important part of Google since the beginning, and remains so as the system grows and evolves. Today dozens of Google engineers use Python, and we're looking for more people with skills in this language. Peter Norvik, director of search quality at  Google, Inc
  8. 8. Course-Builder, Google
  9. 9. Comparação normalizada
  10. 10. http://www.tiobe.com
  11. 11. Guido van Rossum é referido pela comunidade python, desde 1995, como Benevolent Dictator For Life (BDFL) De dezembro de 2005 a 2012 Guido trabalhou na Google, dedicando 50% do seu tempo com a linguagem 7/12/2012 passou a trabalhar na Dropbox www.python.org/~guido neopythonic.blogspot.com/
  12. 12. Não veio da cobra! "Over six years ago, in December 1989, I was looking for a "hobby" programming project that would keep me occupied during the week around Christmas. My office ... would be closed, but I had a home computer, and not much else on my hands. I decided to write an interpreter for the new scripting language I had been thinking about lately: a descendant of ABC that would appeal to Unix/C hackers. I chose Python as a working title for the project, being in a slightly irreverent mood (and a big fan of Monty Python´s Flying Circus)”.
  13. 13. NADA! Python foi desenvolvido como um projeto open source, sem fins lucrativos e gerenciado pela PSF (Python Software Foundation)
  14. 14. Para obter o interpretador Python acessar http://www.python.org/download/ Versões Python 2.7.5 foi liberada em 15 de maio de 2013 Python 3.3.2* foi liberada em 15 de maio de 2013
  15. 15. http://www.python.org/about/success/ Google NASA Yahoo InfoSeek MCI Worldcom IBM Higway Industrial Light and Magic AstraZeneca Honeywell ...
  16. 16. Governo Federal Petrobras Serpro Embratel Globo.com StarOne Conectiva CPqD Async Haxent UTFPR ...
  17. 17. Vários projetos da comunidade Software Livre Blender LibreOffice Zope/Plone MoinMoin Mailman BitTorrent Chandler Gimp Plone Django OpenERP inVesalius
  18. 18. Canivete suíço Web e Internet Database GUIs Científico e processamento numérico Educação Programação de rede Construção e teste de software Desenvolvimento de jogos e renderização 3D Onde mais sua imaginação mandar!
  19. 19. Unix: HP-UX, Solaris ... Linux (frequentemente pré-instalada) Mac OSX (sempre pré-instalada) Windows: 9x, ME, 2K, XP, Vista, Seven (ctypes, win32all) Apple iPhone Google Android
  20. 20. SIM: Compilação Híbrida! Como ficou “famoso” com Java, programas Python são compilados, porém para uma linguagem intermediária, destinada a um interpretador Isola Python de muitas das excentricidades das máquinas reais na qual ele roda provê um nível de portabilidade
  21. 21. Prazer em lhe conhecer! Cython onde existir um compilador C ISO/IEC 9899:1990 Jython máquina virtual Java PyPy Python implementado em Python Python for .NET [Brian Lloyd], IronPython (da M$) Python for Delphi LunaticPython interoperando com Lua Ruby/Python em Ruby importar módulos Python)
  22. 22. De altíssimo nível e poderosa Elegante, com sintaxe simples e concisa Fácil de aprender, “cabe” no seu cérebro ! Multiparadigma Funcional, Procedural e Orientado a Objetos Possui suporte nativo a estruturas de dados complexas
  23. 23. Extensa biblioteca padrão Um módulo para o que você precisar sys, random, re, datetime, calendar, csv, os, webbrowser, string, urlib, Tkinter, codecs, pickle, types, array, mutex, queue, zlib, gzip, md5, thread, socket, email, xml.dom, locale, etc.
  24. 24. Código é muito mais lido que escrito! Readability importa! (muito) Python te ajuda a escrever código mais legível
  25. 25. Python é case sensitive Linhas são delimitadas por enter Tipagem é forte e dinâmica Não há declaração de variáveis como em C, Java, Pascal, etc. Você pode utilizar o interpretador em modo interativo ou seu IDE/editor favoritos
  26. 26. Inúmeros Geany Vim Aptana Komodo NetBeans PyCharm PyDev (Eclipse) Wing IDE Pyshield Spyder MS-Visual Studio Etc.
  27. 27. Ninja IDE (Ninja Is Not Just Another IDE) Multiplataforma Editor de código poderoso Gerenciamento de Projetos Plugins http://ninja-ide.org/
  28. 28. Em Python, variáveis são referências a objetos não guardam os objetos em si não têm tipo, mas os objetos aos quais elas se referem têm tipo São criadas dinamicamente Uma variável não pode ser utilizada em uma expressão sem ter sido inicializada não existe “criação automática” de variáveis
  29. 29. Variáveis não são “caixas” com valores Variáveis são “rótulos” colados em objetos São criadas pela atribuição Operador =
  30. 30. Variáveis são referências a objetos na memória
  31. 31. Atribuição não gera uma cópia do objeto Uma referência (variável) pode ser liberada Usando del Não existindo mais referências a um objeto, ele é removido da memória (garbage collector)
  32. 32. Programas maiores codificados em arquivos (scripts) normalmente usando um IDE extensão py O script pode ser executado diretamente da linha de comando do SO python oi.py Ou carregado para o interpretador interativo >>> import oi
  33. 33. Módulos são arquivos que contêm qualquer estrutura python (classes, funções, variáveis, etc.) e podem ser importados nos programas Quando importado pela primeira vez o módulo é compilado e um arquivo .pyc ou .pyo é gerado Um módulo é um objeto singleton Apenas uma instância é carregada em memória torna-se disponível globalmente para o programa que fez a importação
  34. 34. Funções importantes são disponibilizadas em módulos da biblioteca padrão Ex.: módulo math tem funções como sin, cos, exp e outras Um módulo pode conter não só funções, mas também variáveis ou classes Ex.: math define a constante pi Os módulos são localizados pelo interpretador pela lista de diretórios em PYTHONPATH (sys.path), que inclui o diretório atual
  35. 35. Para usar os elementos de um módulo, comando import import modulo from modulo import nome1,...,nomen from modulo import * A importação ocorre apenas uma vez! Para carregar um módulo novamente (que tenha sido alterado) pode-se usar a função reload No python > 3.x é imp.reload
  36. 36. Exemplos
  37. 37. Se um programa pode ser executado isolado ou importado dentro de outro, como distinguir as duas situações? O módulo principal de um programa tem a variável __name__ contendo “__main__” Para executar um código apenas se o módulo for o principal e não quando ele for importado
  38. 38. Digitar help() no interpretador abre o help interativo Use quit para sair
  39. 39. Python Enhancement Proposal São documentos padronizados da comunidade Python Uma PEP propõe um padrão, melhoria, funcionalidade, estrutura, explicações sobre funcionalidades, etc. Veja a PEP #0 http://www.python.org/dev/peps/pep-0000/
  40. 40. Um bloco inicia com : A estrutura dos blocos é definida pela indentação A PEP #8 - Style Guide for Python Code - sugere 4 espaços Seja consistente Não misturar tabulações com espaços!!!
  41. 41. A partir do caractere #, o interpretador ignora o restante do código até o final da linha Isso não vale dentro de strings Para várias linhas use asplas triplas (docstring) Documentar funções, classes, módulos, etc.
  42. 42. Tipos básicos int = normalmente 32 bits long = limitado ao tamanho da memória Há promoção automática de int para long Divisão de inteiros em python < 3 resulta sempre int
  43. 43. Também são tipos numéricos básicos float = ponto flutuante de 32 bits complex= para números complexos
  44. 44. Construtores ou funções de conversão int (n) float (n) complex (n) abs (n)
  45. 45. Básicos +, -, *, /, ** Inteiros %, // Bit a Bit &, |, ^, ~, >>, <<
  46. 46. Módulo math e outros
  47. 47. Representa o valor nulo Equivalente a False em operações booleanas Aplicações típicas Valor default em parâmetros de funções Valor de retorno de funções que será descartado Como void de C/C++
  48. 48. Constantes True e False Ocorre conversão automática entre tipos Conversão explícita pode ser feita com bool(x)
  49. 49. Relacionais >, <, >=, <=, ==, !=, is, is not Sempre retornam um bool Lógicos and, or, not
  50. 50. str – Sequência de bytes, com a acentuação dependente de encoding Delimitadas por aspas, apóstrofo ou três aspas ou três apóstrofos
  51. 51. Codificações iso-8859-1: padrão ISO Latin-1 iso-8859-15: idem, com símbolo € (Euro) cp1252: MS-Windows codepage 1252 ISO Latin-1 aumentado com caracteres usados em editoração eletrônica (‘’ “” •) utf-8: Unicode Transformation Format. Unicode codificado em 8 bits compatível com ASCII até o código 127 utiliza 2 bytes para caracteres não-ASCII padrão recomendado pelo W3C e está sendo adotado pela maioria dos sistemas
  52. 52. Não existe um tipo próprio para caractere, como o char de C Um caractere é um string de comprimento 1 A função chr pode ser usada para obter o caractere correspondente a um código Unicode e o reverso com ord
  53. 53. Caracteres Unicode também podem ser acessados pelo seu nome com scape N{}
  54. 54. Constantes str ou unicode são interpretadas segundo a codificação declarada num comentário especial no início do arquivo .py Nós (brasileiros) frequentemente lidamos com textos não ASCII!
  55. 55. Use caracteres de formatação, como na printf da linguagem C %s, %d, %f são os mais comuns
  56. 56. Usando type
  57. 57. Usando type
  58. 58. Tuplas são sequências imutáveis não é possível modificar as referências contidas na tupla Tuplas constantes são representadas como sequências de itens entre parênteses
  59. 59. Tuplas são sequências imutáveis Tuplas constantes são representadas como sequências de itens entre parênteses CUIDADO: em certos contextos os parênteses ao redor das tuplas podem ser omitidos!
  60. 60. Listas são coleções de itens heterogêneos que podem ser acessados sequencialmente ou indexados São mutáveis Constantes lista delimitadas por colchetes []
  61. 61. Facilmente você pode criar uma lista numérica com range([inicio,] fim[, passo]) Retorna uma sequência numérica conforme os argumentos dados Normalmente usada em laços for *Na verdade retorna um iterator, em Python >= 3.x
  62. 62. Os tipos string, lista, tupla, buffer são sequências Coleção ordenada e iterável de itens Operações s[i] = acessa um item s[-i] = acessa um item pelo final s+z = concatena s*n = produz n cópias de s concatenadas e in s = elemento e está em s? e not in s = elemento e não está em s?
  63. 63. Operações de slicing s[a:b] cópia de a (inclusive) até b (exclusive) s[a:] cópia a partir de a (inclusive) s[:b] cópia até b (exclusive) s[:] cópia total de s s[a:b:n] cópia de n em n itens Atribuição s[2:5] = [6,3,2,0] Aplicável somente em sequências mutáveis
  64. 64. Strings são sequências e seus itens individuais podem ser acessados Contudo, são imutáveis
  65. 65. A inserção pode ser feita com slicing Ou ainda
  66. 66. Dicionários são estruturas de dados que implementam mapeamentos coleções de pares chave:valor que podem ser recuperados pela chave A chave pode ser qualquer imutável
  67. 67. O tipo set permite agrupar conjuntos de valores Mutável e permite operações típicas
  68. 68. Entrada com input Saída com print
  69. 69. if if (expressao): bloco [elif (expressao): bloco] [else: bloco]
  70. 70. exemplo
  71. 71. for for variavel in sequencia: bloco [else: bloco] while while (expressao): bloco [else: bloco]
  72. 72. Exemplo1 Exemplo2
  73. 73. Modularizam o código Comando def inicia a definição de uma função Comando return marca o fim da execução da função e define o resultado a ser devolvido Pode ser None
  74. 74. Exemplo
  75. 75. Ei, não vamos complicar!
  76. 76. Estourar a pilha de execução é “fácil” E aí, tentou fat(1000)?
  77. 77. Mudando o tamanho da pilha de ativação
  78. 78. Funções que possuem a instrução yeld são Generators Retornam objetos iterators É mantida uma memória do último valor retornado
  79. 79. Classe file representam arquivos Use a função open (ou construtor file(), são sinônimos) abrir arquivo binário para leitura arq = file(‘imagem.png','rb') abrir arquivo texto para escrita arq = open(‘log.txt','w') abrir arquivo para acrescentar (append) arq = file(‘imagem.png','a')
  80. 80. Cuidado: arquivo é uma sequência de bytes! Deve ser interpretada por uma codificação de caracteres Ex.: tentativa de ler um arquivo UTF-8 criado no MS-Windows É assumida codificação padrão (do sistema): CP-1252
  81. 81. Boa prática: especificar a codificação na abertura! O padrão é dependente da plataforma
  82. 82. Criando um bitmap de 2x2 pixels Não entraremos em detalhes (header, dib, data, etc.) do formato bmp NÃO FAÇA isso em sã consciência! Existem bibliotecas especializadas para tratamento de imagens: PIL Arquivo bmp de 70 bytes criado
  83. 83. Alterando o nosso bmp de 2x2 pixels NÃO FAÇA isso em sã consciência! Existem bibliotecas especializadas para tratamento de imagens: PIL Arquivo aberto para R/W Posicionado no byte 65 Escritos 3 bytes
  84. 84. Operações de E/S são realizadas pelo SO O módulo os possui diversas variáveis e funções que ajudam um programa Python adequar-se ao SO os.getcwd() o diretório atual os.chdir(dir) diretório atual para dir os.sep caractere que separa componentes de um caminho ('/' para Unix, '' para Windows) os.path.exists(path) diz se path é o nome de um arquivo existente
  85. 85. Módulo CSV (Comma-Separated Values)
  86. 86. Bibliotecas nativas para compressão Baterias gzip, bzip2, pkzip, etc.
  87. 87. Exceção é um objeto que é lançado (raised/thrown) quando ocorre uma situação inesperada Esse objeto é capturado por um tratador de exceções que “sabe” como manipular essa situação
  88. 88. Considere o pseudocódigo Execute uma tarefa Se a tarefa anterior não foi executada corretamente Execute o processamento de erro Execute a próxima tarefa Se a tarefa anterior não foi executada corretamente Execute o processamento de erro O que há de errado?
  89. 89. Mistura a lógica e o tratamento de erros! Pode tornar o programa difícil de ler/depurar Tratamento de exceções remove o tratamento de erros da ‘linha principal’ de execução do programa Vantagens do Tratamento de Exceções Uma exceção não pode ser ignorada, como ocorre com um código de erro O código de processamento de erros é tratado a parte do código normal do programa Permitem recuperar de situações problemáticas Permitem implementar sistemas mais robustos e tolerantes a falhas
  90. 90. Em Python, tratadores de exceção (exception handlers) são blocos na forma try: suite1 except exceptions: suite2 else: suite3
  91. 91. Foco no “caminho feliz”
  92. 92. Cláusula finally
  93. 93. Lembra? Multiparadigma! Inclui Orientação a Objetos Tudo em python é objeto. Mesmo!
  94. 94. Simplesmente defina a classe e use-a! Classe (class) é um tipo de dados especial que define como construir objetos Também armazena alguns dados que são compartilhados por todas as instâncias dessa classe Instâncias são objetos criados segundo a definição da classe Python não separa a interface da implementação da classe
  95. 95. Não se desespere! para os métodos, defina funções dentro do escopo de class
  96. 96. A função __init__ serve como construtor Nos métodos, o parâmetro self referencia a instância atual NÃO É passado explicitamente
  97. 97. Não é necessário liberar objetos explicitamente Esqueça free ou delete! Coletor automático de lixo, lembra?
  98. 98. Isso funciona, mas com sotaque
  99. 99. Métodos especiais permitem implementar operadores Têm nomes iniciando e finalizando com __
  100. 100. Herança, coleções, métodos de classe, métodos estáticos, atributos “privados”, propriedades, decoradores, coleções, etc. Mas, ... I´ll be back in #2!
  101. 101. Quão rápido roda meu código? Em linha de comando, chamar o profiler python –m profile arq.py
  102. 102. Quão rápido roda meu código? Em linha de comando, chamar o debugger python –m pdb arq.py
  103. 103. TCL-TK é parte integrante, via tkinter Diversos outros bindings de frameworks wxWidgets QT GTK etc.
  104. 104. “List comprehensions” Produz uma lista a partir de qualquer objeto iterável Sintaxe inspirada em Haskell
  105. 105. Inverter a ordem das cartas baralho.reverse() Tirar a carta do topo baralho.pop() Adicionar 4 coringas baralho.extend([‘Coringa’]*4) Colocar em ordem baralho.sort() Pelo número de letras: baralho.sort(key=len)
  106. 106. Baterias: urllib e re
  1. A particular slide catching your eye?

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

×