SlideShare uma empresa Scribd logo
1 de 131
Baixar para ler offline
Marido
Pai de um jovem universitário e 10 gatos
Ok, 8 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)
Doutorando UFPR (2014)
Professor na UTFPR-TD (desde 2009)
Bjarne
Stroustrup,
C++ creator
é 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
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
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 between
them. Every CG image we
create has involved Python
somewhere in the process.
Philip Peterson, Principal Engineer, Research &
Development, Industrial Light & Magic
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
Guido van Rossum é referido
pela comunidade python,
desde 1995, como Benevolent
Dictator For Life ( )
De dezembro de 2005 a 2012
Guido trabalhou na ,
dedicando 50% do seu tempo
com a linguagem
jan/2013 passou a trabalhar na
"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 as a working
title for the project, being in a slightly
irreverent mood (and a big fan of
Monty Python´s Flying Circus)”.
NADA!
Python foi desenvolvido como um
projeto open source, sem fins
lucrativos e gerenciado pela
( )
Para obter o interpretador Python
acessar
Versões
foi liberada em 25 de junho de
2016
foi liberada em 27 de
junho de 2016
http://www.python.org/about/success/
Vários projetos da comunidade Software Livre
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!
: HP-UX, Solaris ...
(frequentemente pré-instalada)
(sempre pré-instalada)
: 9x, ME, 2K, XP, Vista, 7-10
(ctypes, win32all)
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
Prazer em lhe conhecer!
onde existir um compilador ISO/IEC 9899:1990
máquina virtual
Python implementado em RPython
[Brian Lloyd], IronPython (da )
interoperando com
em importar módulos Python)
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
Extensa biblioteca padrão
Um módulo para o que você
precisar
, , , ,
, , , ,
, , ,
, , , ,
, , , , ,
, , ,
, , etc.
A apenas alguns hops de distância
- Python Package Index
Formatos de pacotes
(setuptools, 2004)
(PEP 427, 2012)
Considerado o padrão oficial para distribuição
Código é muito mais lido que escrito!
Readability importa! ( )
Python te ajuda a escrever código mais legível
Python é
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
Inúmeros
Etc.
!
!
)
Multiplataforma
Editor de código poderoso
Gerenciamento de Projetos
Plugins
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 em uma
expressão
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
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ências a um objeto, ele é
removido da memória ( )
Programas maiores codificados em
arquivos (scripts)
normalmente usando um Editor/IDE
extensão py
O script pode ser executado diretamente
da linha de comando do SO
python hellow.py
...ou carregado para o interpretador
interativo
>>> import hellow
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
Não mais: veja a
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 tem funções como , , e
outras
Um módulo pode conter não só funções, mas
também variáveis ou classes
Ex.: define a constante
Os módulos são localizados pelo interpretador
pela lista de diretórios em
( ), que inclui o diretório atual
Para usar os elementos de um módulo,
comando
A importação ocorre apenas uma vez!
Para carregar um módulo novamente (que tenha sido
alterado) pode-se usar a função
No python > 3.x é
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
contendo
Para executar um código apenas se o módulo for o
principal e não quando ele for importado
Digitar no interpretador abre o help
interativo
Use para sair
São documentos padronizados da comunidade
Python
Uma PEP propõe um padrão, melhoria,
funcionalidade, estrutura, explicações sobre
funcionalidades, etc.
Veja a
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!
A partir do caractere , o interpretador ignora
o restante do código até o final da linha (inline
comment): Isso não vale dentro de strings!
Separar da instrução usando pelo menos 2 espaços
Não comentar o óbvio!
Não contradizer o código correspondente!
Mantenha os comentários atualizados quando mudar o código!
Python coders from non-English speaking countries:
please write your comments in English, unless you are
120% sure that the code will never be read by people
who don't speak your language. ( )
Para várias linhas use asplas triplas (docstring)
Tipos básicos
int = normalmente 32 bits
long = limitado ao tamanho da memória
Há promoção automática de int para long
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
Equivalente a 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 de C/C++
Constantes True e False
Ocorre conversão automática
entre tipos
Conversão explícita pode ser feita
com
Relacionais
, , , , , , ,
Sempre retornam um
Lógicos
, ,
– 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
Codificações
: padrão ISO Latin-1
: idem, com símbolo € (Euro)
: MS-Windows codepage 1252
ISO Latin-1 aumentado com caracteres usados em
editoração eletrônica (‘’ “” •)
: 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 e está sendo adotado
pela maioria dos sistemas
Não existe um tipo próprio para caractere,
como o de C
Um caractere é um string de comprimento 1
A função pode ser usada para obter o caractere
correspondente a um código Unicode e o reverso com
Caracteres Unicode também podem ser
acessados pelo seu nome com scape
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
da linguagem C
, , são os mais comuns
Use o método
Maior flexibilidade
Usando
Usando type
Tuplas são sequências
possível modificar as
referências contidas na tupla
Tuplas constantes são
representadas como sequências
de itens entre parênteses
Tuplas são sequências imutáveis
Tuplas constantes são representadas como
CUIDADO: em certos contextos os parênteses ao 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 lista delimitadas por colchetes
Acesso a índices inexistentes levanta exceção!
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
Os tipos string, lista, tupla, buffer são
sequências
Coleção ordenada e iterável de itens
Operações
= acessa um item
= acessa um item pelo final
= concatena
= produz n cópias de s concatenadas
= elemento e está em s?
= elemento e não está em s?
Operações de slicing
cópia de a (inclusive) até b (exclusive)
cópia a partir de a (inclusive)
cópia até b (exclusive)
cópia total de s
cópia de n em n itens
Atribuição
Aplicável somente em sequências mutáveis
Strings são sequências e seus itens individuais
podem ser acessados
Contudo, são imutáveis
A inserção pode ser feita com
Ou ainda
Dicionários são estruturas de dados que
implementam mapeamentos
coleções de pares que podem ser
recuperados pela chave
A chave pode ser qualquer imutável
O tipo permite agrupar conjuntos de
valores
Mutável e permite operações típicas
Entrada com input
Saída com print
if
exemplo
for
while
Exemplo1
Exemplo2
Modularizam o código
Comando inicia a definição de uma função
Comando marca o fim da execução da
função e define o resultado a ser devolvido
Pode ser
Exemplo
Ei, não vamos complicar!
Estourar a pilha de execução é “ ”
E aí, tentou ?
Mudando o tamanho da pilha de ativação
Funções que possuem a
instrução são
Generators
Retornam objetos iterators
É mantida uma memória do
último valor retornado
Classe representam arquivos
Use a função (ou construtor , são
sinônimos)
abrir arquivo binário para leitura
abrir arquivo texto para escrita
abrir arquivo para acrescentar (append)
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):
Boa prática: especificar a codificação na abertura!
O padrão é dependente da plataforma
Criando um de 2x2 pixels
Não entraremos em detalhes (header, dib,
data, etc.) do formato bmp
Existem bibliotecas especializadas para
tratamento de imagens:
Arquivo bmp de 70 bytes criado
Alterando o nosso de 2x2 pixels
Existem bibliotecas especializadas para tratamento de
imagens: PILLOW
Arquivo aberto para R/W
Posicionado no byte 65
Escritos 3 bytes
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
Módulo CSV (Comma-Separated Values)
Bibliotecas nativas para compressão
Baterias gzip, bzip2, pkzip, etc.
Exceção é um objeto que é lançado
( / ) quando ocorre uma situação
inesperada
Esse objeto é capturado por um tratador de exceções que
“sabe” como manipular essa situação
Considere o pseudocódigo
O que há de errado?
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
Em Python, tratadores de exceção (exception
handlers) são blocos na forma
Foco no “caminho feliz”
Cláusula
Lembra? Multiparadigma! Inclui Orientação a
Objetos
Tudo em python é objeto. Mesmo!
Simplesmente defina a classe e use-a!
Classe ( ) é 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
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 explicitamente
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”, mais propriedades,
decoradores, coleções, etc.
Mas, ...
I´ll be back in #2!
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
Tirar a carta do topo
Adicionar 4 coringas
Colocar em ordem
Pelo número de letras:
Baterias: urllib e re
Python Training #0.5 ed. 7

Mais conteúdo relacionado

Mais procurados

Tutorial Python ed. #2
Tutorial Python ed. #2Tutorial Python ed. #2
Tutorial Python ed. #2Fabio Spanhol
 
Python - Introdução Básica
Python - Introdução BásicaPython - Introdução Básica
Python - Introdução BásicaChristian Perone
 
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 PythonGiancarlo Silva
 
Apresentando a Linguagem de Programação Python
Apresentando a Linguagem de Programação PythonApresentando a Linguagem de Programação Python
Apresentando a Linguagem de Programação PythonPriscila Mayumi
 
Apresentação python fábio jr alves
Apresentação python   fábio jr alvesApresentação python   fábio jr alves
Apresentação python fábio jr alvesGrupython Ufla
 
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)Marcelo Barros de Almeida
 
Introdução a estruturas de dados em python
Introdução a estruturas de dados em pythonIntrodução a estruturas de dados em python
Introdução a estruturas de dados em pythonAlvaro Oliveira
 
Paradigmas de Linguagens de Programação
Paradigmas de Linguagens de ProgramaçãoParadigmas de Linguagens de Programação
Paradigmas de Linguagens de ProgramaçãoFabio Spanhol
 
Python: programação divertida novamente
Python: programação divertida novamentePython: programação divertida novamente
Python: programação divertida novamenteRodrigo Amaral
 
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 d2Moises de Paula
 
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 PythonJardel Weyrich
 
Trabalho de Paradigmas Da Linguagem De Programação - Python
Trabalho de Paradigmas Da Linguagem De Programação - PythonTrabalho de Paradigmas Da Linguagem De Programação - Python
Trabalho de Paradigmas Da Linguagem De Programação - PythonJanderson Campêlo
 
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 PythonAlvaro Oliveira
 
Introdução à Programação em Python
Introdução à Programação em PythonIntrodução à Programação em Python
Introdução à Programação em PythonRodrigo Hübner
 
Python Mini Ccurso Consegi2011
Python Mini Ccurso Consegi2011Python Mini Ccurso Consegi2011
Python Mini Ccurso Consegi2011Luiz Aldabalde
 
Python - Guia de bolso
Python - Guia de bolsoPython - Guia de bolso
Python - Guia de bolsoJean Lopes
 

Mais procurados (20)

Tutorial Python ed. #2
Tutorial Python ed. #2Tutorial Python ed. #2
Tutorial Python ed. #2
 
Tutorial Python - 1
Tutorial Python - 1Tutorial Python - 1
Tutorial Python - 1
 
Python - Introdução Básica
Python - Introdução BásicaPython - Introdução Básica
Python - Introdução Básica
 
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
 
Apresentando a Linguagem de Programação Python
Apresentando a Linguagem de Programação PythonApresentando a Linguagem de Programação Python
Apresentando a Linguagem de Programação Python
 
Apresentação python fábio jr alves
Apresentação python   fábio jr alvesApresentação python   fábio jr alves
Apresentação python fábio jr alves
 
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)
 
Introdução a estruturas de dados em python
Introdução a estruturas de dados em pythonIntrodução a estruturas de dados em python
Introdução a estruturas de dados em python
 
Paradigmas de Linguagens de Programação
Paradigmas de Linguagens de ProgramaçãoParadigmas de Linguagens de Programação
Paradigmas de Linguagens de Programação
 
Python: programação divertida novamente
Python: programação divertida novamentePython: programação divertida novamente
Python: programação divertida novamente
 
Python - Introdução
Python - IntroduçãoPython - Introdução
Python - Introdução
 
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
 
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
 
Trabalho de Paradigmas Da Linguagem De Programação - Python
Trabalho de Paradigmas Da Linguagem De Programação - PythonTrabalho de Paradigmas Da Linguagem De Programação - Python
Trabalho de Paradigmas Da Linguagem De Programação - Python
 
Programando com Python
Programando com PythonProgramando com Python
Programando com Python
 
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 à Programação em Python
Introdução à Programação em PythonIntrodução à Programação em Python
Introdução à Programação em Python
 
Python Mini Ccurso Consegi2011
Python Mini Ccurso Consegi2011Python Mini Ccurso Consegi2011
Python Mini Ccurso Consegi2011
 
AulaPython.pdf
AulaPython.pdfAulaPython.pdf
AulaPython.pdf
 
Python - Guia de bolso
Python - Guia de bolsoPython - Guia de bolso
Python - Guia de bolso
 

Semelhante a Python Training #0.5 ed. 7

Computação Científica com SciPy - Brevíssimo Tutorial
Computação Científica com SciPy - Brevíssimo TutorialComputação Científica com SciPy - Brevíssimo Tutorial
Computação Científica com SciPy - Brevíssimo TutorialFabio Spanhol
 
Python django7semestre
Python django7semestre Python django7semestre
Python django7semestre Denis Vieira
 
The zen of python 2010
The zen of python 2010The zen of python 2010
The zen of python 2010Luiz Aldabalde
 
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êsHelio Colombe
 
Linguagem de Programação Python
Linguagem de Programação PythonLinguagem de Programação Python
Linguagem de Programação PythonJunior Sobrenome
 
Administração de sistemas usando Python
Administração de sistemas usando PythonAdministração de sistemas usando Python
Administração de sistemas usando PythonHelio Loureiro
 
python_para_desenvolvedores.pdf
python_para_desenvolvedores.pdfpython_para_desenvolvedores.pdf
python_para_desenvolvedores.pdfProfIvanSaboia
 
Comsolid2011 Introdução Python
Comsolid2011 Introdução PythonComsolid2011 Introdução Python
Comsolid2011 Introdução PythonGleison Rodrigues
 
A lógica do Python e seus termos
A lógica do Python e seus termosA lógica do Python e seus termos
A lógica do Python e seus termosValore I/O
 
Aula 01 python
Aula 01 pythonAula 01 python
Aula 01 pythonTiago
 
Desenvolvimento de aplicações embarcadas utilizando Python
Desenvolvimento de aplicações embarcadas utilizando PythonDesenvolvimento de aplicações embarcadas utilizando Python
Desenvolvimento de aplicações embarcadas utilizando PythonFlávio Ribeiro
 
Por Que Python É Tão Lento?
Por Que Python É Tão Lento?Por Que Python É Tão Lento?
Por Que Python É Tão Lento?Rudá Moura
 
Trabalho linguagem python
Trabalho linguagem  pythonTrabalho linguagem  python
Trabalho linguagem pythonBruno Maspoli
 
Fundamentos de Python
Fundamentos de PythonFundamentos de Python
Fundamentos de PythonJeff560813
 

Semelhante a Python Training #0.5 ed. 7 (20)

Computação Científica com SciPy - Brevíssimo Tutorial
Computação Científica com SciPy - Brevíssimo TutorialComputação Científica com SciPy - Brevíssimo Tutorial
Computação Científica com SciPy - Brevíssimo Tutorial
 
Python django7semestre
Python django7semestre Python django7semestre
Python django7semestre
 
The zen of python 2010
The zen of python 2010The zen of python 2010
The zen of python 2010
 
Introdução à linguagem python
Introdução à linguagem pythonIntrodução à linguagem python
Introdução à linguagem 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
 
Administração de sistemas usando Python
Administração de sistemas usando PythonAdministração de sistemas usando Python
Administração de sistemas usando Python
 
python_para_desenvolvedores.pdf
python_para_desenvolvedores.pdfpython_para_desenvolvedores.pdf
python_para_desenvolvedores.pdf
 
Canivete suíço do Python
Canivete suíço do PythonCanivete suíço do Python
Canivete suíço do Python
 
Curso Python - Aula 01
Curso Python - Aula 01Curso Python - Aula 01
Curso Python - Aula 01
 
Programação Python na Iot
Programação Python na IotProgramação Python na Iot
Programação Python na Iot
 
Comsolid2011 Introdução Python
Comsolid2011 Introdução PythonComsolid2011 Introdução Python
Comsolid2011 Introdução Python
 
Python, CPython, Pythonico, Cython
Python, CPython, Pythonico, CythonPython, CPython, Pythonico, Cython
Python, CPython, Pythonico, Cython
 
A lógica do Python e seus termos
A lógica do Python e seus termosA lógica do Python e seus termos
A lógica do Python e seus termos
 
Aula 01 python
Aula 01 pythonAula 01 python
Aula 01 python
 
Desenvolvimento de aplicações embarcadas utilizando Python
Desenvolvimento de aplicações embarcadas utilizando PythonDesenvolvimento de aplicações embarcadas utilizando Python
Desenvolvimento de aplicações embarcadas utilizando Python
 
Por Que Python É Tão Lento?
Por Que Python É Tão Lento?Por Que Python É Tão Lento?
Por Que Python É Tão Lento?
 
Trabalho linguagem python
Trabalho linguagem  pythonTrabalho linguagem  python
Trabalho linguagem python
 
Fundamentos de Python
Fundamentos de PythonFundamentos de Python
Fundamentos de Python
 
Python.pptx
Python.pptxPython.pptx
Python.pptx
 

Mais de Fabio Spanhol

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ógicasFabio Spanhol
 
Quem Tem Medo do Terminal?
Quem Tem Medo do Terminal?Quem Tem Medo do Terminal?
Quem Tem Medo do Terminal?Fabio Spanhol
 
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édioFabio Spanhol
 
Elaboração e Gerenciamento de Projetos
Elaboração e Gerenciamento de Projetos Elaboração e Gerenciamento de Projetos
Elaboração e Gerenciamento de Projetos Fabio Spanhol
 
XML-RPC: Tópicos Introdutórios
XML-RPC: Tópicos IntrodutóriosXML-RPC: Tópicos Introdutórios
XML-RPC: Tópicos IntrodutóriosFabio Spanhol
 
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 2010Fabio Spanhol
 
E essa tal Virtualização?
E essa tal Virtualização?E essa tal Virtualização?
E essa tal Virtualização?Fabio Spanhol
 
"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 PythonFabio 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. ed2Fabio Spanhol
 
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 PythonFabio Spanhol
 

Mais de Fabio Spanhol (10)

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

Python Training #0.5 ed. 7

  • 1.
  • 2. Marido Pai de um jovem universitário e 10 gatos Ok, 8 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) Doutorando UFPR (2014) Professor na UTFPR-TD (desde 2009)
  • 4. é 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
  • 5. 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
  • 6. Life is Better Without Braces. Bruce Eckel
  • 7. 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
  • 8. 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
  • 9.
  • 10.
  • 11. Guido van Rossum é referido pela comunidade python, desde 1995, como Benevolent Dictator For Life ( ) De dezembro de 2005 a 2012 Guido trabalhou na , dedicando 50% do seu tempo com a linguagem jan/2013 passou a trabalhar na
  • 12. "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 as a working title for the project, being in a slightly irreverent mood (and a big fan of Monty Python´s Flying Circus)”.
  • 13.
  • 14. NADA! Python foi desenvolvido como um projeto open source, sem fins lucrativos e gerenciado pela ( )
  • 15. Para obter o interpretador Python acessar Versões foi liberada em 25 de junho de 2016 foi liberada em 27 de junho de 2016
  • 17.
  • 18. Vários projetos da comunidade Software Livre
  • 19. 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!
  • 20.
  • 21.
  • 22. : HP-UX, Solaris ... (frequentemente pré-instalada) (sempre pré-instalada) : 9x, ME, 2K, XP, Vista, 7-10 (ctypes, win32all)
  • 23. 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
  • 24. Prazer em lhe conhecer! onde existir um compilador ISO/IEC 9899:1990 máquina virtual Python implementado em RPython [Brian Lloyd], IronPython (da ) interoperando com em importar módulos Python)
  • 25. 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
  • 26. Extensa biblioteca padrão Um módulo para o que você precisar , , , , , , , , , , , , , , , , , , , , , , , , , etc.
  • 27. A apenas alguns hops de distância - Python Package Index
  • 28. Formatos de pacotes (setuptools, 2004) (PEP 427, 2012) Considerado o padrão oficial para distribuição
  • 29.
  • 30. Código é muito mais lido que escrito! Readability importa! ( ) Python te ajuda a escrever código mais legível
  • 31.
  • 32. Python é 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
  • 33.
  • 35. !
  • 36. !
  • 37. ) Multiplataforma Editor de código poderoso Gerenciamento de Projetos Plugins
  • 38.
  • 39. 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 em uma expressão não existe “criação automática” de variáveis
  • 40. 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 =
  • 41. Variáveis são referências a objetos na memória
  • 42. 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 ( )
  • 43. Programas maiores codificados em arquivos (scripts) normalmente usando um Editor/IDE extensão py O script pode ser executado diretamente da linha de comando do SO python hellow.py ...ou carregado para o interpretador interativo >>> import hellow
  • 44. 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 Não mais: veja a 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
  • 45. Funções importantes são disponibilizadas em módulos da biblioteca padrão Ex.: módulo tem funções como , , e outras Um módulo pode conter não só funções, mas também variáveis ou classes Ex.: define a constante Os módulos são localizados pelo interpretador pela lista de diretórios em ( ), que inclui o diretório atual
  • 46. Para usar os elementos de um módulo, comando A importação ocorre apenas uma vez! Para carregar um módulo novamente (que tenha sido alterado) pode-se usar a função No python > 3.x é
  • 48. 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 contendo Para executar um código apenas se o módulo for o principal e não quando ele for importado
  • 49.
  • 50. Digitar no interpretador abre o help interativo Use para sair
  • 51. São documentos padronizados da comunidade Python Uma PEP propõe um padrão, melhoria, funcionalidade, estrutura, explicações sobre funcionalidades, etc. Veja a
  • 52. 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!
  • 53.
  • 54. A partir do caractere , o interpretador ignora o restante do código até o final da linha (inline comment): Isso não vale dentro de strings! Separar da instrução usando pelo menos 2 espaços Não comentar o óbvio! Não contradizer o código correspondente! Mantenha os comentários atualizados quando mudar o código! Python coders from non-English speaking countries: please write your comments in English, unless you are 120% sure that the code will never be read by people who don't speak your language. ( )
  • 55. Para várias linhas use asplas triplas (docstring)
  • 56. Tipos básicos int = normalmente 32 bits long = limitado ao tamanho da memória Há promoção automática de int para long
  • 57. Também são tipos numéricos básicos float = ponto flutuante de 32 bits complex= para números complexos
  • 58. Construtores ou funções de conversão int (n) float (n) complex (n) abs (n)
  • 59. Básicos +, -, *, /, ** Inteiros %, // Bit a Bit &, |, ^, ~, >>, <<
  • 60. Módulo math e outros
  • 61. Representa o valor Equivalente a 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 de C/C++
  • 62. Constantes True e False Ocorre conversão automática entre tipos Conversão explícita pode ser feita com
  • 63. Relacionais , , , , , , , Sempre retornam um Lógicos , ,
  • 64. – 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
  • 65. Codificações : padrão ISO Latin-1 : idem, com símbolo € (Euro) : MS-Windows codepage 1252 ISO Latin-1 aumentado com caracteres usados em editoração eletrônica (‘’ “” •) : 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 e está sendo adotado pela maioria dos sistemas
  • 66. Não existe um tipo próprio para caractere, como o de C Um caractere é um string de comprimento 1 A função pode ser usada para obter o caractere correspondente a um código Unicode e o reverso com
  • 67. Caracteres Unicode também podem ser acessados pelo seu nome com scape
  • 68. Constantes str ou unicode são interpretadas segundo a codificação declarada num comentário especial no início do arquivo
  • 69. Use caracteres de formatação, como na da linguagem C , , são os mais comuns
  • 70. Use o método Maior flexibilidade
  • 73. Tuplas são sequências possível modificar as referências contidas na tupla Tuplas constantes são representadas como sequências de itens entre parênteses
  • 74. Tuplas são sequências imutáveis Tuplas constantes são representadas como CUIDADO: em certos contextos os parênteses ao redor das tuplas podem ser omitidos!
  • 75. 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 Acesso a índices inexistentes levanta exceção!
  • 76.
  • 77. 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
  • 78. Os tipos string, lista, tupla, buffer são sequências Coleção ordenada e iterável de itens Operações = acessa um item = acessa um item pelo final = concatena = produz n cópias de s concatenadas = elemento e está em s? = elemento e não está em s?
  • 79. Operações de slicing cópia de a (inclusive) até b (exclusive) cópia a partir de a (inclusive) cópia até b (exclusive) cópia total de s cópia de n em n itens Atribuição Aplicável somente em sequências mutáveis
  • 80. Strings são sequências e seus itens individuais podem ser acessados Contudo, são imutáveis
  • 81. A inserção pode ser feita com Ou ainda
  • 82. Dicionários são estruturas de dados que implementam mapeamentos coleções de pares que podem ser recuperados pela chave A chave pode ser qualquer imutável
  • 83. O tipo permite agrupar conjuntos de valores Mutável e permite operações típicas
  • 85. if
  • 89. Modularizam o código Comando inicia a definição de uma função Comando marca o fim da execução da função e define o resultado a ser devolvido Pode ser
  • 91.
  • 92.
  • 93. Ei, não vamos complicar!
  • 94. Estourar a pilha de execução é “ ” E aí, tentou ?
  • 95. Mudando o tamanho da pilha de ativação
  • 96. Funções que possuem a instrução são Generators Retornam objetos iterators É mantida uma memória do último valor retornado
  • 97.
  • 98. Classe representam arquivos Use a função (ou construtor , são sinônimos) abrir arquivo binário para leitura abrir arquivo texto para escrita abrir arquivo para acrescentar (append)
  • 99. 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):
  • 100. Boa prática: especificar a codificação na abertura! O padrão é dependente da plataforma
  • 101. Criando um de 2x2 pixels Não entraremos em detalhes (header, dib, data, etc.) do formato bmp Existem bibliotecas especializadas para tratamento de imagens: Arquivo bmp de 70 bytes criado
  • 102. Alterando o nosso de 2x2 pixels Existem bibliotecas especializadas para tratamento de imagens: PILLOW Arquivo aberto para R/W Posicionado no byte 65 Escritos 3 bytes
  • 103. 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
  • 105. Bibliotecas nativas para compressão Baterias gzip, bzip2, pkzip, etc.
  • 106. Exceção é um objeto que é lançado ( / ) quando ocorre uma situação inesperada Esse objeto é capturado por um tratador de exceções que “sabe” como manipular essa situação
  • 107. Considere o pseudocódigo O que há de errado?
  • 108. 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
  • 109. Em Python, tratadores de exceção (exception handlers) são blocos na forma
  • 110. Foco no “caminho feliz”
  • 112. Lembra? Multiparadigma! Inclui Orientação a Objetos Tudo em python é objeto. Mesmo!
  • 113. Simplesmente defina a classe e use-a! Classe ( ) é 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
  • 114. Não se desespere! para os métodos, defina funções dentro do escopo de class
  • 115. A função __init__ serve como construtor Nos métodos, o parâmetro self referencia a instância atual NÃO é passado explicitamente
  • 116. Não é necessário liberar objetos explicitamente Esqueça free ou delete! Coletor automático de lixo, lembra?
  • 117. Isso funciona, mas com sotaque
  • 118.
  • 119. Métodos especiais permitem implementar operadores Têm nomes iniciando e finalizando com
  • 120.
  • 121. Herança, coleções, métodos de classe, métodos estáticos, atributos “privados”, mais propriedades, decoradores, coleções, etc. Mas, ... I´ll be back in #2!
  • 122. Quão rápido roda meu código? Em linha de comando, chamar o profiler python –m profile arq.py
  • 123. Quão rápido roda meu código? Em linha de comando, chamar o debugger python –m pdb arq.py
  • 124. TCL-TK é parte integrante, via tkinter Diversos outros bindings de frameworks wxWidgets QT GTK etc.
  • 125.
  • 126. “List comprehensions” Produz uma lista a partir de qualquer objeto iterável Sintaxe inspirada em Haskell
  • 127.
  • 128.
  • 129. Inverter a ordem das cartas Tirar a carta do topo Adicionar 4 coringas Colocar em ordem Pelo número de letras: