SlideShare une entreprise Scribd logo
1  sur  81
Télécharger pour lire hors ligne
SciPy é software open source voltado para
matemáticos, engenheiros e cientistas em geral
  http://www.scipy.org/

  Ideal para computação científica

   Matemática avançada, processamento de sinais,
  otimização, estatística, etc.

  Extensão da linguagem Python

    Utiliza também as extensões Numpy e MatplotLib
é 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
Numpy define vetores/matrizes numéricas e
operações sobre os mesmos

  http://numpy.scipy.org/

  Alta performance

    Manipular arrays de Numpy é muito mais rápido que
  listas nativas de Python
Exemplo: Python puro x Numpy
Intel i5-2400 3.10 GHz, 4 GB DDR3
 Leva 15 segundos!




 É instantâneo!
Scipy e NumPy não fornecem funções nativas
para plotagem

  São pacotes essencialmente para processamento
 numérico

  Para plotar, usar o pacote Matplotlib
  Gráficos em 2D
  http://matplotlib.sourceforge.net/
Acesse
http://docs.scipy.org/doc/
Python for Scientific Computing Conference
http://conference.scipy.org/scipy2011/
Python é uma linguagem de script
 Adote que o IDE que você preferir: vim, emacs, Wing, Eric,
Netbeans, Ninja, etc.

  Scipy é usado normalmente com a shell interativa avançada
IPython
Normalmente o conjunto é chamado pylab




          IPython

  SciPy             Matplotlib

          NumPy

          Python
Olhando Python um
pouco mais de perto!
Para obter o interpretador Python
acessar
http://www.python.org/download/
  Versões
  Python 2.7.2 foi liberada em 11 de junho
 de 2011
  Python 3.2.2* foi liberada em 04 de
 setembro de 2011
Onde sua imaginação mandar!
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
renderização 3D
Roda em
Unix: HP-UX, Solaris ...
Linux (freqüentemente pré-instalada)
Mac OSX (sempre pré-instalada)
Windows: 9x, ME, 2K, XP, Vista, Seven
Apple iPhone
Google Android
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.
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
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
Variáveis não são “caixas” com valores
Variáveis são “rótulos” colados em objetos

São criadas pela atribuição =
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)
Normalmente para programas maiores você
irá codificar arquivos (scripts) em um IDE
  extensão py

   O script pode ser executado diretamente da
linha de comando
  python oi.py


  Ou carregado para o interpretador interativo
  >>> import oi.py
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
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
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
Exemplos
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
A estrutura dos blocos é definida pela
indentação
  Não misturar tabulações com espaços
Quando o caractere # aparece, 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)
  Será útil para documentar funções, classes, módulos, etc.
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
Tipos 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ções
Valor de retorno de funções que será descartado
 Como void de C/C++
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 do encoding
  Delimitadas por aspas, apóstrofo ou três
 aspas ou três apóstrofos
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
Use caracteres de formatação, como na printf
de C

  %s, %d, %f são os mais comuns
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




 CUIDADO: em certos contextos os parênteses em
redor das tuplas podem ser omitidos
Listas são coleções de itens heterogêneos
que podem ser acessados sequencialmente ou
indexados
  São mutáveis
  Constantes do tipo lista são delimitadas por
 colchetes []
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
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?
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
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
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]
Exemplo
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
Exemplo
Ei, não vamos complicar!
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')
Voltando a Scipy!
Teste interativo, aplicações pequenas


Aplicações “sérias”
Considere
Valor de 




Valor de
Um array Numpy é uma coleção homegênea
de N-dimensões de itens do mesmo tipo

  O tipo pode ser qualquer estrutura arbitrária
Criação e verificação de tipos
Dimensões

Bytes por elemento




Quantidade de elementos



Quantidade de bytes
Multiplicação por um escalar
Multiplicação por vetor e aplicação de função
Criação




Transposta



Inversa
Diagonal




Solve
Módulo stats

Cálculo de estatísticas básicas
 numpy.mean,
 numpy.std,
 numpy.var
 numpy.cov
 stats.skew
 stats.kurtosis
 stats.moment
 Etc.
Distribuições
Processamento de sinais e imagens
Filtragem (Filtering)
  Convolução 2D (com condições de limite)
  Convolução ND
  Filtro B-spline
  Filtro ND Order, filtro ND mediana
  Filtros IIR/FIR e projeto de filtros
Sistemas LTI(Linear Time-Invariant)
  Simulação de sistemas
  Impulso e resposta
  Expansão em frações parciais
A famosa imagem clássica lena está
empacotada para testes
A imagem lena é
um pequeno
recorte de uma
foto digitalizada
da Playboy
americana
(novembro,1973),
da modelo sueca
Lena Sjooblom
Aplicando filtro
Inserção de ruído
Filtro para remoção de ruído
Detecção de limites
Sistemas LTI
Exemplo
Minimização da Função de Bessel (1784-1846)

 Propagação de ondas
 Difusão de calor
 Processamento de sinais
 etc.




              !
Ex.: Minimizar
Função de Bessel, primeira ordem, entre 4 e 7
Mais de 200 funções!
Exemplo: Bessel
Ex.: Plotando   e
Computação Científica com SciPy - Brevíssimo Tutorial

Contenu connexe

Tendances

Introdução a programação em python d2
Introdução a programação em python d2Introdução a programação em python d2
Introdução a programação em python d2
Moises de Paula
 
Python - Guia de bolso
Python - Guia de bolsoPython - Guia de bolso
Python - Guia de bolso
Jean Lopes
 
Python - Introdução Básica
Python - Introdução BásicaPython - Introdução Básica
Python - Introdução Básica
Christian Perone
 

Tendances (20)

Python - Programação funcional
Python - Programação funcionalPython - Programação funcional
Python - Programação funcional
 
Python Training #1 - ed5
Python Training #1 - ed5Python Training #1 - ed5
Python Training #1 - ed5
 
Python Training #0.5 ed. 7
Python Training #0.5 ed. 7Python Training #0.5 ed. 7
Python Training #0.5 ed. 7
 
2016/01/27 - Aprendendo a programar com Python
2016/01/27 - Aprendendo a programar com Python2016/01/27 - Aprendendo a programar com Python
2016/01/27 - Aprendendo a programar com Python
 
Python - Introdução
Python - IntroduçãoPython - Introdução
Python - Introdução
 
Python Training #1, ed. 6
Python Training #1, ed. 6Python Training #1, ed. 6
Python Training #1, ed. 6
 
Python para desenvolvedores - material apoio (parte I)
Python para desenvolvedores - material apoio (parte I)Python para desenvolvedores - material apoio (parte I)
Python para desenvolvedores - material apoio (parte I)
 
Mostrando a Cobra - Breve Introdução à Linguagem Python
Mostrando a Cobra - Breve Introdução à Linguagem Python Mostrando a Cobra - Breve Introdução à Linguagem Python
Mostrando a Cobra - Breve Introdução à Linguagem Python
 
Curso de Python e Django
Curso de Python e DjangoCurso de Python e Django
Curso de Python e Django
 
Curso básico de Algoritmos com Python
Curso básico de Algoritmos com PythonCurso básico de Algoritmos com Python
Curso básico de Algoritmos com Python
 
Python: programação divertida novamente
Python: programação divertida novamentePython: programação divertida novamente
Python: programação divertida novamente
 
Introdução à linguagem Python
Introdução à linguagem PythonIntrodução à linguagem Python
Introdução à linguagem Python
 
Introdução a programação em python d2
Introdução a programação em python d2Introdução a programação em python d2
Introdução a programação em python d2
 
Python para Desenvolvedores
Python para DesenvolvedoresPython para Desenvolvedores
Python para Desenvolvedores
 
Python - Guia de bolso
Python - Guia de bolsoPython - Guia de bolso
Python - Guia de bolso
 
Python - Introdução Básica
Python - Introdução BásicaPython - Introdução Básica
Python - Introdução Básica
 
Python for zombies (very basic level)
Python for zombies (very basic level)Python for zombies (very basic level)
Python for zombies (very basic level)
 
Python e django na prática
Python e django na práticaPython e django na prática
Python e django na prática
 
Programando para web com python - Introdução a Python
Programando para web com python - Introdução a PythonProgramando para web com python - Introdução a Python
Programando para web com python - Introdução a Python
 
Introdução a Linguagem de Programação Python
Introdução a Linguagem de Programação PythonIntrodução a Linguagem de Programação Python
Introdução a Linguagem de Programação Python
 

Similaire à Computação Científica com SciPy - Brevíssimo Tutorial

Apostila C++ Básico - UNIVERSIDADE ESTADUAL PAULISTA “JÚLIO DE MESQUITA FILHO”
Apostila C++ Básico - UNIVERSIDADE ESTADUAL PAULISTA “JÚLIO DE MESQUITA FILHO”Apostila C++ Básico - UNIVERSIDADE ESTADUAL PAULISTA “JÚLIO DE MESQUITA FILHO”
Apostila C++ Básico - UNIVERSIDADE ESTADUAL PAULISTA “JÚLIO DE MESQUITA FILHO”
Kratos879
 

Similaire à Computação Científica com SciPy - Brevíssimo Tutorial (20)

Aula python
Aula pythonAula python
Aula python
 
Curso de Python (Básico) - Português
Curso de Python (Básico) - PortuguêsCurso de Python (Básico) - Português
Curso de Python (Básico) - Português
 
Linguagem de Programação Python
Linguagem de Programação PythonLinguagem de Programação Python
Linguagem de Programação Python
 
Python.pptx
Python.pptxPython.pptx
Python.pptx
 
Python2.5.ppt
Python2.5.pptPython2.5.ppt
Python2.5.ppt
 
Cherrypy - um framework para desenvolvimento rápido de aplicações web
Cherrypy - um framework para desenvolvimento rápido de aplicações webCherrypy - um framework para desenvolvimento rápido de aplicações web
Cherrypy - um framework para desenvolvimento rápido de aplicações web
 
Python Emsl2009
Python Emsl2009Python Emsl2009
Python Emsl2009
 
Python
PythonPython
Python
 
Python
PythonPython
Python
 
Introducao ao python
Introducao ao pythonIntroducao ao python
Introducao ao python
 
Aula3PythonBasico.ppt
Aula3PythonBasico.pptAula3PythonBasico.ppt
Aula3PythonBasico.ppt
 
Aula3PythonBasico (1).ppt
Aula3PythonBasico (1).pptAula3PythonBasico (1).ppt
Aula3PythonBasico (1).ppt
 
Sbc scipy
Sbc scipySbc scipy
Sbc scipy
 
Sbc scipy
Sbc scipySbc scipy
Sbc scipy
 
Apostila C++ Básico - UNIVERSIDADE ESTADUAL PAULISTA “JÚLIO DE MESQUITA FILHO”
Apostila C++ Básico - UNIVERSIDADE ESTADUAL PAULISTA “JÚLIO DE MESQUITA FILHO”Apostila C++ Básico - UNIVERSIDADE ESTADUAL PAULISTA “JÚLIO DE MESQUITA FILHO”
Apostila C++ Básico - UNIVERSIDADE ESTADUAL PAULISTA “JÚLIO DE MESQUITA FILHO”
 
Apostila c++ básico
Apostila c++ básicoApostila c++ básico
Apostila c++ básico
 
Apostila c++ básico (1)
Apostila c++ básico (1)Apostila c++ básico (1)
Apostila c++ básico (1)
 
Trabalho sobre a linguagem Python
Trabalho sobre a linguagem PythonTrabalho sobre a linguagem Python
Trabalho sobre a linguagem Python
 
Workshop Python.2
Workshop Python.2Workshop Python.2
Workshop Python.2
 
Automacao com Python.pdf
Automacao com Python.pdfAutomacao com Python.pdf
Automacao com Python.pdf
 

Plus de Fabio Spanhol

"Mostrando a Cobra" - ou Breve Introdução a Linguagem Python. ed2
"Mostrando a Cobra" - ou Breve Introdução a Linguagem Python. ed2"Mostrando a Cobra" - ou Breve Introdução a Linguagem Python. ed2
"Mostrando a Cobra" - ou Breve Introdução a Linguagem Python. ed2
Fabio Spanhol
 

Plus de Fabio Spanhol (12)

Classificação Automatizada de Câncer de Mama - Imagens Histopatológicas
Classificação Automatizada de Câncer de Mama - Imagens HistopatológicasClassificação Automatizada de Câncer de Mama - Imagens Histopatológicas
Classificação Automatizada de Câncer de Mama - Imagens Histopatológicas
 
Quem Tem Medo do Terminal?
Quem Tem Medo do Terminal?Quem Tem Medo do Terminal?
Quem Tem Medo do Terminal?
 
Linguagem C 01 - Tópicos Introdutórios
Linguagem C 01 - Tópicos IntrodutóriosLinguagem C 01 - Tópicos Introdutórios
Linguagem C 01 - Tópicos Introdutórios
 
ENEM - Exame Nacional do Ensino Médio
ENEM - Exame Nacional do Ensino MédioENEM - Exame Nacional do Ensino Médio
ENEM - Exame Nacional do Ensino Médio
 
Paradigmas de Linguagens de Programação
Paradigmas de Linguagens de ProgramaçãoParadigmas de Linguagens de Programação
Paradigmas de Linguagens de Programação
 
Elaboração e Gerenciamento de Projetos
Elaboração e Gerenciamento de Projetos Elaboração e Gerenciamento de Projetos
Elaboração e Gerenciamento de Projetos
 
XML-RPC: Tópicos Introdutórios
XML-RPC: Tópicos IntrodutóriosXML-RPC: Tópicos Introdutórios
XML-RPC: Tópicos Introdutórios
 
Gestão de Projetos com MS-Project 2010
Gestão de Projetos com MS-Project 2010Gestão de Projetos com MS-Project 2010
Gestão de Projetos com MS-Project 2010
 
E essa tal Virtualização?
E essa tal Virtualização?E essa tal Virtualização?
E essa tal Virtualização?
 
"Mostrando a Cobra" - ou Breve Introdução à Linguagem Python
"Mostrando a Cobra" - ou Breve Introdução à Linguagem Python"Mostrando a Cobra" - ou Breve Introdução à Linguagem Python
"Mostrando a Cobra" - ou Breve Introdução à Linguagem Python
 
"Mostrando a Cobra" - ou Breve Introdução a Linguagem Python. ed2
"Mostrando a Cobra" - ou Breve Introdução a Linguagem Python. ed2"Mostrando a Cobra" - ou Breve Introdução a Linguagem Python. ed2
"Mostrando a Cobra" - ou Breve Introdução a Linguagem Python. ed2
 
Automação de Aplicativos: Scripting com Python
Automação de Aplicativos: Scripting com PythonAutomação de Aplicativos: Scripting com Python
Automação de Aplicativos: Scripting com Python
 

Dernier

Dernier (9)

ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docxATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 

Computação Científica com SciPy - Brevíssimo Tutorial

  • 1.
  • 2. SciPy é software open source voltado para matemáticos, engenheiros e cientistas em geral http://www.scipy.org/ Ideal para computação científica Matemática avançada, processamento de sinais, otimização, estatística, etc. Extensão da linguagem Python Utiliza também as extensões Numpy e MatplotLib
  • 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. Numpy define vetores/matrizes numéricas e operações sobre os mesmos http://numpy.scipy.org/ Alta performance Manipular arrays de Numpy é muito mais rápido que listas nativas de Python
  • 5. Exemplo: Python puro x Numpy Intel i5-2400 3.10 GHz, 4 GB DDR3 Leva 15 segundos! É instantâneo!
  • 6. Scipy e NumPy não fornecem funções nativas para plotagem São pacotes essencialmente para processamento numérico Para plotar, usar o pacote Matplotlib Gráficos em 2D http://matplotlib.sourceforge.net/
  • 8. Python for Scientific Computing Conference http://conference.scipy.org/scipy2011/
  • 9.
  • 10. Python é uma linguagem de script Adote que o IDE que você preferir: vim, emacs, Wing, Eric, Netbeans, Ninja, etc. Scipy é usado normalmente com a shell interativa avançada IPython
  • 11. Normalmente o conjunto é chamado pylab IPython SciPy Matplotlib NumPy Python
  • 12. Olhando Python um pouco mais de perto!
  • 13. Para obter o interpretador Python acessar http://www.python.org/download/ Versões Python 2.7.2 foi liberada em 11 de junho de 2011 Python 3.2.2* foi liberada em 04 de setembro de 2011
  • 14. Onde sua imaginação mandar! 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 renderização 3D
  • 15. Roda em Unix: HP-UX, Solaris ... Linux (freqüentemente pré-instalada) Mac OSX (sempre pré-instalada) Windows: 9x, ME, 2K, XP, Vista, Seven Apple iPhone Google Android
  • 16. 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.
  • 17. 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
  • 18. 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
  • 19. Variáveis não são “caixas” com valores Variáveis são “rótulos” colados em objetos São criadas pela atribuição =
  • 20. 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)
  • 21. Normalmente para programas maiores você irá codificar arquivos (scripts) em um IDE extensão py O script pode ser executado diretamente da linha de comando python oi.py Ou carregado para o interpretador interativo >>> import oi.py
  • 22. 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
  • 23. 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
  • 24. 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
  • 26. 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
  • 27.
  • 28. A estrutura dos blocos é definida pela indentação Não misturar tabulações com espaços
  • 29. Quando o caractere # aparece, 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) Será útil para documentar funções, classes, módulos, etc.
  • 30. 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
  • 31. Tipos básicos float = ponto flutuante de 32 bits complex= para números complexos
  • 32. Construtores ou funções de conversão int (n) float (n) complex (n) abs (n)
  • 33. Básicos +, -, *, /, ** Inteiros %, // Bit a Bit &, |, ^, ~, >>, <<
  • 34. Módulo math e outros
  • 35. 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++
  • 36. Constantes True e False Ocorre conversão automática entre tipos Conversão explícita pode ser feita com bool(x)
  • 37. Relacionais >, <, >=, <=, ==, !=, is, is not Sempre retornam um bool Lógicos and, or, not
  • 38. str – Sequência de bytes, com a acentuação dependente do encoding Delimitadas por aspas, apóstrofo ou três aspas ou três apóstrofos
  • 39. 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
  • 40. Use caracteres de formatação, como na printf de C %s, %d, %f são os mais comuns
  • 41. 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 CUIDADO: em certos contextos os parênteses em redor das tuplas podem ser omitidos
  • 42. Listas são coleções de itens heterogêneos que podem ser acessados sequencialmente ou indexados São mutáveis Constantes do tipo lista são delimitadas por colchetes []
  • 43. 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
  • 44. 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?
  • 45. 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
  • 46. 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
  • 48. if if (expressao): bloco [elif (expressao): bloco] [else: bloco]
  • 50. for for variavel in sequencia: bloco [else: bloco] while while (expressao): bloco [else: bloco]
  • 52. 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
  • 54.
  • 55. Ei, não vamos complicar!
  • 56. 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')
  • 58. Teste interativo, aplicações pequenas Aplicações “sérias” Considere
  • 60. Um array Numpy é uma coleção homegênea de N-dimensões de itens do mesmo tipo O tipo pode ser qualquer estrutura arbitrária
  • 62. Dimensões Bytes por elemento Quantidade de elementos Quantidade de bytes
  • 64. Multiplicação por vetor e aplicação de função
  • 67. Módulo stats Cálculo de estatísticas básicas numpy.mean, numpy.std, numpy.var numpy.cov stats.skew stats.kurtosis stats.moment Etc.
  • 69. Processamento de sinais e imagens Filtragem (Filtering) Convolução 2D (com condições de limite) Convolução ND Filtro B-spline Filtro ND Order, filtro ND mediana Filtros IIR/FIR e projeto de filtros Sistemas LTI(Linear Time-Invariant) Simulação de sistemas Impulso e resposta Expansão em frações parciais
  • 70. A famosa imagem clássica lena está empacotada para testes
  • 71. A imagem lena é um pequeno recorte de uma foto digitalizada da Playboy americana (novembro,1973), da modelo sueca Lena Sjooblom
  • 77. Exemplo Minimização da Função de Bessel (1784-1846) Propagação de ondas Difusão de calor Processamento de sinais etc. !
  • 78. Ex.: Minimizar Função de Bessel, primeira ordem, entre 4 e 7
  • 79. Mais de 200 funções! Exemplo: Bessel