Breve Introdução a Linguagem Python

Propaganda
$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)
Prof. Fabio Alexandre Spanhol, M.Sc.
2
é 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
Prof. Fabio Alexandre Spanhol, M.Sc.
3
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
Prof. Fabio Alexandre Spanhol, M.Sc.
4
Life is Better
Without Braces.
Bruce Eckel
Prof. Fabio Alexandre Spanhol, M.Sc.
5
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 Prof. Fabio Alexandre Spanhol, M.Sc.
Google, Inc
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
Prof. Fabio Alexandre Spanhol, M.Sc.
7
Prof. Fabio Alexandre Spanhol, M.Sc.
8
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
Prof. Fabio Alexandre Spanhol, M.Sc.
 7/12/2012 passou a trabalhar na
Dropbox
 www.python.org/~guido
 neopythonic.blogspot.com/ 9
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)”.
Prof. Fabio Alexandre Spanhol, M.Sc.
10
Prof. Fabio Alexandre Spanhol, M.Sc.
11
NADA!
Python foi desenvolvido como um
projeto open source, sem fins
lucrativos e gerenciado pela PSF
(Python Software Foundation)
Prof. Fabio Alexandre Spanhol, M.Sc.
12
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
Prof. Fabio Alexandre Spanhol, M.Sc.
13
http://www.python.org/about/success/
Google
NASA
Yahoo
InfoSeek
MCI Worldcom
IBM
Higway
Industrial Light and Magic
AstraZeneca
Honeywell
...
Prof. Fabio Alexandre Spanhol, M.Sc.
14
Governo Federal
Petrobras
Serpro
Embratel
Globo.com
StarOne
Conectiva
CPqD
Async
Haxent
UTFPR
...
Prof. Fabio Alexandre Spanhol, M.Sc.
15
Vários projetos da comunidade Software
Livre
Blender
OpenOffice
Zope/Plone
MoinMoin
Mailman
BitTorrent
Chandler
Gimp
Plone
Django
OpenERP
inVesalius
Prof. Fabio Alexandre Spanhol, M.Sc.
16
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!
Prof. Fabio Alexandre Spanhol, M.Sc.
17
Prof. Fabio Alexandre Spanhol, M.Sc.
18
Prof. Fabio Alexandre Spanhol, M.Sc.
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
Prof. Fabio Alexandre Spanhol, M.Sc.
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
Prof. Fabio Alexandre Spanhol, M.Sc.
21
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
Prof. Fabio Alexandre Spanhol, M.Sc.
Possui suporte nativo a
estruturas de dados
complexas
22
Prof. Fabio Alexandre Spanhol, M.Sc.
23
Prof. Fabio Alexandre Spanhol, M.Sc.
24
Prof. Fabio Alexandre Spanhol, M.Sc.
25
Prof. Fabio Alexandre Spanhol, M.Sc.
26
Código é muito mais lido que escrito!
Readability importa! (muito)
 Python te ajuda a escrever
legível!
Prof. Fabio Alexandre Spanhol, M.Sc.
código mais
27
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.
Prof. Fabio Alexandre Spanhol, M.Sc.
28
Prof. Fabio Alexandre Spanhol, M.Sc.
29
33 palavras reservadas
Java tem 53 e C# 77
 and
except
 as
finally
 assert
for
 break
from
 class
global
 continue
if
 def
import
 del
in
 elif
is
 else
lambda
Prof. Fabio Alexandre Spanhol, M.Sc.
nonlocal
not
or
pass
raise
return
try
while
with
yeld
False
None
True
30
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)
Prof. Fabio Alexandre Spanhol, M.Sc.
31
Prof. Fabio Alexandre Spanhol, M.Sc.
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
Prof. Fabio Alexandre Spanhol, M.Sc.
33
Inúmeros
Geany
Vim
Aptana
Komodo
NetBeans
PyCharm
PyDev (Eclipse)
Wing IDE
Pyshield
Spyder
MS-Visual Studio
Etc.
Prof. Fabio Alexandre Spanhol, M.Sc.
34
Ninja IDE (Ninja Is Not Just Another IDE)
Multiplataforma
Editor de código poderoso
Gerenciamento de Projetos
Plugins
 http://ninja-ide.org/
Prof. Fabio Alexandre Spanhol, M.Sc.
35
Prof. Fabio Alexandre Spanhol, M.Sc.
36
Prof. Fabio Alexandre Spanhol, M.Sc.
37
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/
Prof. Fabio Alexandre Spanhol, M.Sc.
38
Python é case-sensitive
Cada linha é delimitada por enter
Tipagem forte e dinâmica
Não há declaração de variáveis
Alguns operadores
Atribuição: =
Aritméticos: +, -, *, /, **,//, %
Relacionais: <, >, >=,<=, ==, !=, <>, is, in
Lógicos: and, or, not
Bitwise: |, ^, &, >>, <<, ~
Prof. Fabio Alexandre Spanhol, M.Sc.
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 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
Prof. Fabio Alexandre Spanhol, M.Sc.
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 =
Prof. Fabio Alexandre Spanhol, M.Sc.
41
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)
Prof. Fabio Alexandre Spanhol, M.Sc.
42
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!!!
Prof. Fabio Alexandre Spanhol, M.Sc.
43
Prof. Fabio Alexandre Spanhol, M.Sc.
44
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.
Prof. Fabio Alexandre Spanhol, M.Sc.
45
Inteiros
x
y
z

= 10
= 56859898958711346465165798798715654000000000000**2
= y + x
3233048109594863662031421586618163610229539807267781773950479
944647716000000000000000000000010L
Ponto flutuante
f = 85.99984
Booleanos
True e False
Strings
Delimitadas por aspas ou apóstrofo
s = “python”
s2 = ‘language’
s3 = “%s %s” % (s,s2)
Prof. Fabio Alexandre Spanhol, M.Sc.
46
Usando type
Prof. Fabio Alexandre Spanhol, M.Sc.
47
Usando type
Prof. Fabio Alexandre Spanhol, M.Sc.
48
Tuplas
Imutáveis
(‘Fabio’,36, False, 89.2,186)
Listas
mutáveis
[‘Fabio’,36, False, 89.2,186]
Dicionários
Chaves com valores associados
refeicoes = {"café" : “cereal com leite e mel", "almoço" :
"macarrão carbonara“,"jantar" : "sopa de champignon"}
refeicoes["almoço"]
Conjuntos
Não permite elementos duplicados
set([1,2,3,4,5,6,8,9,8,1,2,7,1,2,5])
Retorna
 set([1, 2, 3, 4, 5, 6, 7, 8, 9])
Prof. Fabio Alexandre Spanhol, M.Sc.
49
Entrada com input
Saída com print
Prof. Fabio Alexandre Spanhol, M.Sc.
50
if
if (expressao):
bloco
[elif (expressao):
bloco]
[else:
bloco]
Prof. Fabio Alexandre Spanhol, M.Sc.
51
exemplo
Prof. Fabio Alexandre Spanhol, M.Sc.
52
For
for variavel in sequencia:
bloco
[else:
bloco]
While
while (expressao):
bloco
[else:
bloco]
Prof. Fabio Alexandre Spanhol, M.Sc.
53
Exemplo1
Exemplo2
Prof. Fabio Alexandre Spanhol, M.Sc.
54
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
Prof. Fabio Alexandre Spanhol, M.Sc.
55
Exemplo
Prof. Fabio Alexandre Spanhol, M.Sc.
56
Prof. Fabio Alexandre Spanhol, M.Sc.
57
Ei, não vamos complicar!
Prof. Fabio Alexandre Spanhol, M.Sc.
58
Estourar a pilha de execução é “fácil”
E aí, tentou fat(1000)?
Prof. Fabio Alexandre Spanhol, M.Sc.
59
Mudando o tamanho da pilha de ativação
Prof. Fabio Alexandre Spanhol, M.Sc.
60
Prof. Fabio Alexandre Spanhol, M.Sc.
61
Prof. Fabio Alexandre Spanhol, M.Sc.
62
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)
Prof. Fabio Alexandre Spanhol, M.Sc.
63
TCL-TK é parte integrante, via tkinter
Diversos outros bindings de frameworks
wxWidgets
QT
GTK
etc.
Prof. Fabio Alexandre Spanhol, M.Sc.
64
Prof. Fabio Alexandre Spanhol, M.Sc.
65
Também tem!
Você pode fazer programação funcional sem
Lost in Stupid Parenthesis (LISP)
Prof. Fabio Alexandre Spanhol, M.Sc.
66
Prof. Fabio Alexandre Spanhol, M.Sc.
67
Prof. Fabio Alexandre Spanhol, M.Sc.
68
Download