python tutorial-ed3

100

Upload: fabio-alexandre-spanhol

Post on 18-Dec-2014

791 views

Category:

Documents


0 download

DESCRIPTION

Minicurso ministrado na Unipar-Cascavel, em 25 de setembro de 2012.

TRANSCRIPT

Page 1: Python tutorial-ed3
Page 2: Python tutorial-ed3

é uma linguagem interpretada, interativa, funcional, orientada a objetos, dinamicamentetipada e com gerenciamentoautomático de memória

Similar, em certos aspectos, a Perl, Ruby, Scheme, Smalltalk e Tcl

Page 3: Python tutorial-ed3

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

Page 4: Python tutorial-ed3

Life is Better Without Braces.

Bruce Eckel

Page 5: Python tutorial-ed3

Python has been an important part of Googlesince 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

Page 6: Python tutorial-ed3

Course-Builder, Google

Page 7: Python tutorial-ed3
Page 8: Python tutorial-ed3

Guido van Rossum é referido pela comunidade python, desde 1995, como Benevolent Dictator For Life(BDFL)

Desde dezembro de 2005 Guido trabalha na Google, dedicando 50% do seu tempo com a linguagem

www.python.org/~guidoneopythonic.blogspot.com/

Page 9: Python tutorial-ed3

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)”.

Page 10: Python tutorial-ed3
Page 11: Python tutorial-ed3

NADA!

Python foi desenvolvido como um projeto open source, sem fins lucrativos e gerenciado pela PSF(Python Software Foundation)

Page 12: Python tutorial-ed3

Para obter o interpretador Python acessar http://www.python.org/download/ VersõesPython 2.7.3 foi liberada em 9 de abril de

2012Python 3.2.3* foi liberada em 10 de abril

de 2012

Page 13: Python tutorial-ed3

http://www.python.org/about/success/GoogleNASAYahooInfoSeekMCI WorldcomIBM HigwayIndustrial Light and MagicAstraZenecaHoneywell...

Page 14: Python tutorial-ed3

Governo FederalPetrobrasSerproEmbratelGlobo.comStarOneConectivaCPqDAsyncHaxentUTFPR...

Page 15: Python tutorial-ed3

Vários projetos da comunidade Software Livre

BlenderLibreOfficeZope/PloneMoinMoinMailmanBitTorrentChandlerGimpPloneDjangoOpenERPinVesalius

Page 16: Python tutorial-ed3

Web e Internet DatabaseGUIsCientífico e processamento

numéricoEducaçãoProgramação de rede Construção e teste de softwareDesenvolvimento de jogos e

renderização 3DOnde mais sua imaginação mandar!

Page 17: Python tutorial-ed3
Page 18: Python tutorial-ed3
Page 19: Python tutorial-ed3

Unix: HP-UX, Solaris ...Linux (freqüentemente pré-instalada)Mac OSX (sempre pré-instalada)Windows: 9x, ME, 2K, XP, Vista, Seven

(ctypes, win32all)Apple iPhoneGoogle Android

Page 20: Python tutorial-ed3

Compilação Híbrida

como Java, programas Python sãocompilados, porém para uma linguagemintermediária, destinada a uminterpretador

Isola Python de muitas das excentricidades dasmáquinas reais na qual ele roda

provê um nível de portabilidade

Page 21: Python tutorial-ed3

Prazer em lhe conhecer!Cython

onde existir um compilador C ISO/IEC 9899:1990Jython

máquina virtual JavaPyPy

Python implementado em PythonPython for .NET

[Brian Lloyd], IronPython (da M$)Python for DelphiLunaticPython

interoperando com LuaRuby/Python

em Ruby importar módulos Python)

Page 22: Python tutorial-ed3

De altíssimo nível e poderosaElegante, com sintaxe

simples e concisaFácil de aprender,

“cabe” no seu cérebro !Multiparadigma

Funcional, Procedural e Orientado a ObjetosPossui suporte nativo a

estruturas de dados complexas

Page 23: Python tutorial-ed3

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.

Page 24: Python tutorial-ed3
Page 25: Python tutorial-ed3

Código é muito mais lido que escrito!

Readability importa! (muito)

Python te ajuda a escrever código mais legível

Page 26: Python tutorial-ed3
Page 27: Python tutorial-ed3

Python é case sensitiveLinhas são delimitadas por enterTipagem é forte e dinâmica

Não há declaração de variáveis como em C, Java, Pascal,etc.

Você pode utilizar o interpretador em modointerativo ou seu IDE/editor favoritos

Page 28: Python tutorial-ed3
Page 29: Python tutorial-ed3

InúmerosGeanyVimAptanaKomodoNetBeansPyCharmPyDev (Eclipse)Wing IDEPyshieldSpyderMS-Visual StudioEtc.

Page 30: Python tutorial-ed3

Ninja IDE (Ninja Is Not Just Another IDE)

MultiplataformaEditor de código poderosoGerenciamento de ProjetosPluginshttp://ninja-ide.org/

Page 31: Python tutorial-ed3

Em Python, variáveis são referências a objetos

não guardam os objetos em sinão têm tipo, mas os objetos aos quais elas se

referem têm tipoSã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

Page 32: Python tutorial-ed3

Variáveis não são “caixas” com valoresVariáveis são “rótulos” colados em objetos

São criadas pela atribuiçãoOperador =

Page 33: Python tutorial-ed3

Atribuição não gera uma cópia do objetoUma referência (variável) pode ser liberadaUsando delNão existindo mais referências a um objeto, ele é removido da memória (garbage collector)

Page 34: Python tutorial-ed3

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

Page 35: Python tutorial-ed3

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 singletonApenas uma instância é carregada em memória torna-se disponível globalmente para o programa

que fez a importação

Page 36: Python tutorial-ed3

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 outrasUm módulo pode conter não só funções, mas

também variáveis ou classesEx.: 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

Page 37: Python tutorial-ed3

Para usar os elementos de um módulo, comando import

import modulofrom 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

Page 38: Python tutorial-ed3

Exemplos

Page 39: Python tutorial-ed3

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

Page 40: Python tutorial-ed3
Page 41: Python tutorial-ed3

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 #0http://www.python.org/dev/peps/pep-0000/

Page 42: Python tutorial-ed3

Um bloco inicia com :

A estrutura dos blocos é definida pelaindentação

A PEP #8 - Style Guide for Python Code - sugere4 espaços

Seja consistenteNão misturar tabulações com espaços!!!

Page 43: Python tutorial-ed3
Page 44: Python tutorial-ed3

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.

Page 45: Python tutorial-ed3

Tipos básicosint = normalmente 32 bitslong = limitado ao tamanho da memóriaHá promoção automática de int para longDivisão de inteiros em python < 3 resulta sempre int

Page 46: Python tutorial-ed3

Também são tipos numéricos básicosfloat = ponto flutuante de 32 bitscomplex= para números complexos

Page 47: Python tutorial-ed3

Construtores ou funções de conversãoint (n)float (n)complex (n)abs (n)

Page 48: Python tutorial-ed3

Básicos+, -, *, /, **

Inteiros%, //

Bit a Bit&, |, ^, ~, >>, <<

Page 49: Python tutorial-ed3

Módulo math e outros

Page 50: Python tutorial-ed3

Representa o valor nuloEquivalente a False em operações booleanas

Aplicações típicasValor default em parâmetros de funçõesValor de retorno de funções que será descartadoComo void de C/C++

Page 51: Python tutorial-ed3

Constantes True e FalseOcorre conversão automática entre tipos

Conversão explícita pode ser feita com bool(x)

Page 52: Python tutorial-ed3

Relacionais>, <, >=, <=, ==, !=, is, is notSempre retornam um bool

Lógicosand, or, not

Page 53: Python tutorial-ed3

str – Sequência de bytes, com aacentuação dependente do encoding

Delimitadas por aspas, apóstrofo ou trêsaspas ou três apóstrofos

Page 54: Python tutorial-ed3

Codificaçõesiso-8859-1: padrão ISO Latin-1iso-8859-15: idem, com símbolo € (Euro)cp1252: MS-Windows codepage 1252ISO Latin-1 aumentado com caracteres usados em editoração eletrônica (‘’ “” •)

utf-8: 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

Page 55: Python tutorial-ed3

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!

Page 56: Python tutorial-ed3

Use caracteres de formatação, como na printfde C

%s, %d, %f são os mais comuns

Page 57: Python tutorial-ed3

Usando type

Page 58: Python tutorial-ed3

Usando type

Page 59: Python tutorial-ed3

Tuplas são sequências imutáveisnão é possível modificar as referências contidas na

tuplaTuplas 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!

Page 60: Python tutorial-ed3

Listas são coleções de itens heterogêneos que podem ser acessados sequencialmente ou indexados

São mutáveisConstantes do tipo lista são delimitadas por

colchetes []

Page 61: Python tutorial-ed3

Facilmente você pode criar uma lista numérica comrange([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

Page 62: Python tutorial-ed3

Os tipos string, lista, tupla, buffer são sequências

Coleção ordenada e iterável de itens

Operaçõess[i] = acessa um items[-i] = acessa um item pelo finals+z = concatenas*n = produz n cópias de s concatenadase in s = elemento e está em s?e not in s = elemento e não está em s?

Page 63: Python tutorial-ed3

Operações de slicings[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 ss[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

Page 64: Python tutorial-ed3

Dicionários são estruturas de dados queimplementam mapeamentos

coleções de pares chave:valor que podem ser recuperados pela chaveA chave pode ser qualquer imutável

Page 65: Python tutorial-ed3

Entrada com input

Saída com print

Page 66: Python tutorial-ed3

ifif (expressao):

bloco[elif (expressao):

bloco][else:

bloco]

Page 67: Python tutorial-ed3

exemplo

Page 68: Python tutorial-ed3

forfor variavel in sequencia:

bloco[else:

bloco]while

while (expressao):bloco

[else:bloco]

Page 69: Python tutorial-ed3

Exemplo1

Exemplo2

Page 70: Python tutorial-ed3

Modularizam o códigoComando def inicia a definição de uma funçãoComando return marca o fim da execução da função

e define o resultado a ser devolvidoPode ser None

Page 71: Python tutorial-ed3

Exemplo

Page 72: Python tutorial-ed3
Page 73: Python tutorial-ed3
Page 74: Python tutorial-ed3

Ei, não vamos complicar!

Page 75: Python tutorial-ed3

Estourar a pilha de execução é “fácil”

E aí, tentou fat(1000)?

Page 76: Python tutorial-ed3

Mudando o tamanho da pilha de ativação

Page 77: Python tutorial-ed3

Funções que possuem a instrução yeld são Generators

Retornam objetos iteratorsÉ mantida uma memória do último valor retornado

Page 78: Python tutorial-ed3
Page 79: Python tutorial-ed3

Classe file representam arquivos Use a função open (ou construtor file(), são

sinônimos)

abrir arquivo binário para leituraarq = file(‘imagem.png','rb')

abrir arquivo texto para escritaarq = open(‘log.txt','w')

abrir arquivo para acrescentar (append)arq = file(‘imagem.png','a')

Page 80: Python tutorial-ed3

Cuidado: arquivo é uma sequência de bytes!Deve ser interpretada por uma codificação de caracteres

Ex.: tentativa de ler um arquivo UTF-8 aberto no MS-WindowsÉ assumida codificação padrão (do sistema): CP-1252

Page 81: Python tutorial-ed3

Boa prática: especificar a codificação na abertura!O padrão é dependente da plataforma

Page 82: Python tutorial-ed3

Criando um bitmap de 2x2 pixelsNão entraremos em detalhes (header, dib, data, etc.)

do formato bmpNÃO FAÇA isso em sã consciência!Existem bibliotecas especializadas para tratamento de imagens: PIL

Arquivo bmp de 70 bytes criado

Page 83: Python tutorial-ed3

Alterando o nosso bmp de 2x2 pixelsNÃO FAÇA isso em sã consciência!Existem bibliotecas especializadas para tratamento de imagens: PIL

Arquivo aberto para R/WPosicionado no byte 65Escritos 3 bytes

Page 84: Python tutorial-ed3

Operações de E/S são realizadas pelo SO

O módulo os possui diversas variáveis e funções queajudam um programa Python adequar-se ao SO

os.getcwd() o diretório atualos.chdir(dir) diretório atual para diros.sep caractere que separa componentes de um caminho('/' para Unix, '\\' para Windows) os.path.exists(path) diz se path é o nome de um arquivoexistente

Page 85: Python tutorial-ed3

Módulo CSV (Comma-Separated Values)

Page 86: Python tutorial-ed3

Bibliotecas nativas para compressãoBaterias gzip, bzip2, pkzip, etc.

Page 87: Python tutorial-ed3

Lembra? Multiparadigma! Inclui Orientação a Objetos

Tudo em python é objeto. Mesmo!

Page 88: Python tutorial-ed3

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

Page 89: Python tutorial-ed3

Para os métodos, defina funções dentro do escopo de class

Page 90: Python tutorial-ed3

A função __init__ serve como construtor

Nos métodos, o parâmetro self referencia a instância atual

NÃO É passado explicitamente

Page 91: Python tutorial-ed3

Não é necessário liberar objetos explicitamente

Esqueça free ou delete!

Coletor automático de lixo, lembra?

Page 92: Python tutorial-ed3

Herança, métodos de classe, métodos estáticos, atributos “privados”, propriedades, etc.

Mas, ...

I´ll be back in #2!

Page 93: Python tutorial-ed3

TCL-TK é parte integrante, via tkinterDiversos outros bindings de frameworks

wxWidgetsQTGTKetc.

Page 94: Python tutorial-ed3
Page 95: Python tutorial-ed3

“List comprehensions”

Produz uma lista a partir de qualquer objeto iterávelSintaxe inspirada em Haskell

Page 96: Python tutorial-ed3
Page 97: Python tutorial-ed3
Page 98: Python tutorial-ed3

Inverter a ordem das cartasbaralho.reverse()

Tirar a carta do topobaralho.pop()

Adicionar 4 coringasbaralho.extend([‘Coringa’]*4)

Colocar em ordembaralho.sort()Pelo número de letras: baralho.sort(key=len)

Page 99: Python tutorial-ed3

Baterias: urllib e re

Page 100: Python tutorial-ed3