Buscar

Introdução à Linguagem Python

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 3, do total de 40 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 6, do total de 40 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 9, do total de 40 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Prévia do material em texto

PDF gerado usando o pacote de ferramentas em código aberto mwlib. Veja http://code.pediapress.com/ para mais informações.
PDF generated at: Fri, 06 Dec 2013 10:38:13 UTC
Python
Conteúdo
Páginas
Introdução 1
Instalação 2
Conceitos básicos 4
Interpretador interativo 4
Análise léxica 7
Indentação 8
Compilador de Byte 9
Variáveis e identificadores 9
Comentários e docstrings 10
Tipos e operadores 12
Estrutura dos blocos 15
Estrutura de dados 16
Funções 19
Módulos 20
Erros e exceções 21
Classes 23
Encapsulamento 25
Herança e polimorfismo 26
Python Avançado 27
Bibliotecas padrão 28
Bibliotecas externas 29
Programação com GUI 30
Tkinter 34
Python Wikipedia Bot 34
Referências 35
Referências
Fontes e Editores da Página 36
Fontes, Licenças e Editores da Imagem 37
Licenças das páginas
Licença 38
Introdução 1
Introdução
Voltar para a página inicial.
Em 1991, o matemático Guido van Rossum criou a linguagem de programação Python, escreveu na documentação
oficial da linguagem um breve histórico do início do seu desenvolvimento. Conta que no final de 1990 nos
laboratórios do CWI, foi criado o Python como uma linguagem de scripts para o Sistema Operacional Distribuído
Amoeba. Evolucionada da linguagem ABC, que tinha um foco para usuários como físicos, engenheiros e lingüistas,
ela nasce para ser uma linguagem para os leigos em computação também a utilizarem. Em 1995, continuando o
trabalho na CNRI nos Estados Unidos e depois em 2000 na BeOpen.com, formando a BeOpen PythonLabs.
Em outubro do mesmo ano, a PythonLabs mudou para Digital Creations, atualmente chama-se Zope Corporation3.
Em 2001, a Python Software Foundation4 foi formada, uma organização não-comercial criada especificamente para
trabalhar com propriedade intelectual do software. A Zope Corporation é um membro-patrocinador da PSF até hoje.
Conta também que o nome “Python” teve a sua origem no grupo humorístico do cinema britânico Monty Python,
criador do programa Monty Python Flying Circus.
A linguagem foi pensada e estruturada para o ensino de programação, então ela teria que conter uma compreensão
simples da estrutura para o fácil aprendizado e é isso que o Python apresenta, uma linguagem interpretada, de
alto-nível e orientada a objeto.
Sua sintaxe é simples e elegante, ideal para scripts e desenvolvimento de aplicações rápidas, RAD. Guido van
Rossum em entrevista para BeOpen.com disse que "o difícil é criar uma linguagem que faça tanto sentido para outro
ser humano quanto faz para uma máquina ler”, é costume em palestras sobre a linguagem dizer que “o que se pensa,
escreve”.
Próxima
Instalação 2
Instalação
Voltar para a página inicial.
Microsoft Windows
• Python já vem instalado com o OpenOffice.org, e o executável python.exe encontra-se no mesmo diretório que os
demais aplicativos.
• O download da última versão do software python para windows pode ser feita pelo site http:/ / www. python. org,
através do link http:/ / www. python. org/ ftp/ python/ 2. 6. 1/ python-2. 6. 1. msi, para a versão 2.6.1, ou se
preferir a versão 3.0 use este link: http:/ / www. python. org/ ftp/ python/ 3. 0/ python-3. 0. msi.
•• A instalação é a padrão, abra o arquivo e vá clicando em avançar.
•• Após a instalação, clique em: Iniciar / Programas / Python.2.X / IDLE e,
Você deverá estar com uma janela de prompt aberta parecida com esta:
Python 2.6.1 (r252:60911, Feb 21 2008, 13:11:45) [MSC v.1310 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>>
Para que aconteça, digite no prompt de comando:
c:\python26\python.exe
Essa informação diz ao prompt de comando para executar o arquivo Python.exe (um programa) e diz o endereço
onde esse arquivo está c:\ é a partição, ou o disco rígido, python26\ é a pasta onde o arquivo python.exe se encontra.
UNIX / Linux
Geralmente as distribuições UNIX/Linux já vem com o interpretador Python, por exemplo, no Kurumin Linux basta
clicar no menu K → Desenvolvimento → Python.
Mas caso não tiver instale com, por exemplo, Debian Linux, e entre no shell como superusuário e digite:
localhost:~$ su
Password: [senha]
localhost:~# apt-get install python
Reading Package Lists... Done
Building Dependency Tree... Done
...
...
•• Teste:
localhost:~$ python
Python 2.3.1 (#1, Jan 22 2005, 12:14:47)
[GCC 3.3.2 20030908 (Debian prerelease)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
•• Source
Instalação 3
Ou da maneira mais comum, caso sua distribuição Linux não possua um método de tratamento de
pacotes/atualizações, pelo código fonte:
Baixe a versão que desejar:
http:/ / www. python. org/ ftp/ python/ 3. 0/ Python-3. 0. tgz http:/ / www. python. org/ ftp/ python/ 2. 6. 1/ Python-2.
6. 1. tgz
Depois descompacte:
$ tar -zxvf Python-3.0.tgz
Torne-se superusuário:
$ su
Senha:
Faça a pré-configuração:
# ./configure
Antes de prosseguir veja se não apareceu alguma mensagem indicando algum erro. Caso não exista nenhum erro,
prossiga digitando:
# make
Neste caso pode ocorrer alguns avisos, como esse: "INFO: Can't locate Tcl/Tk libs and/or headers", avisando que
não conseguiu localizar as bibliotecas para Tcl/Tk, caso o make não localize isso não poderá usar o modulo tkinter,
usado na construção de interfaces básicas.
Se não achou nenhum erro é só iniciar a instalação:
# make install ou
# make altinstall 
A primeira situação é normal, mas a segunda consta na documentação da linguagem, recomendado para quem quer
mais que uma versão na mesma máquina, sem que esta última seja a versão padrão.
Macintosh
Assim como em sistemas Linux, já vem instalado em sistemas Mac OS X, mas indico aqui os links:
•• Mac OS X 10.3 (Panther)
http:/ / www. python. org/ ftp/ python/ 2. 4. 3/ Universal-MacPython-2. 4. 3-2006-04-07. dmg
•• Mac OS X 10.3.9 ou 10.4 (Tiger)
http:/ / www. pythonmac. org/ packages/
•• Mac OS X 10.5 (Leopard)
Neste caso leia as instruções neste wiki em inglês: http:/ / wiki. python. org/ moin/ MacPython/ Leopard
•• Mac OS X 10.6 (Snow Leopard)
Conteúdo do site da Apple indica que virá instalado e versão 2.6, foi localizado no site Softpedia para a versão 3.0:
http:/ / mac. softpedia. com/ get/ Developer-Tools/ Python-X. shtml
Obs.: Mas antes de instalar qualquer versão do Python, teste (digitando python no console, como dito antes), porque
na maioria dos sistemas operacionais (o MS Windows é uma exceção), já está instalado por padrão.
Próxima
Conceitos básicos 4
Conceitos básicos
Voltar para a página inicial.
•• Conceitos básicos
•• Interpretador interativo
•• Análise léxica
•• Endentação
•• Compilador de Byte
•• Variáveis e identificadores
•• Comentários e docstrings
•• Tipos e operadores
•• Estrutura dos blocos
•• Estruturas de dados
•• Funções
•• Módulos
•• Erros e exceções
•• Classes
•• Encapsulamento
•• Herança e polimorfismo
Próxima: Interpretador interativo
Interpretador interativo
Voltar para a página inicial.
O interpretador interativo é uma característica diferencial da linguagem, porque há a possibilidade de testar e
modificar funções antes de incluí-las nos programas. Isso pertime um grau de aprendizado relativamente alto em
relação às outras linguagens. Por essa e outras característica é que Python é uma linguagem intuitivamente fácil de se
aprender.
Invocando o Interpretador:
No Linux: Simplesmente abra um terminal e digite:
 $ python
No Windows: Se instalado corretamente, vá no prompt do DOS e digite:
 python
Caso o executável python.exe esteja instalado em algum lugar diferente (por exemplo, o OpenOffice.org inclui o
python.exe, mas ele não fica disponível para o DOS), deve-se indicar o path completo. Por exemplo:
 "c:\Arquivos de programas\BrOffice.org 3\program\python.exe"
(as aspas são necessárias por causado péssimo hábito de criarem-se diretórios com espaços em branco e caracteres
não-ASCII no nome).
Em qualquer caso, você verá o interpretador funcionando, como abaixo:
Interpretador interativo 5
Python 2.3.3 (#1, Jan 22 2005, 12:14:47)
[GCC 2.95.4 20011002 (Debian prerelease)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 1+1
2
>>>
>>> a = 1+1
>>> print a
2
>>>
É possível imprimir informações formatadas, este assunto será tratado mais adiante, em Python/Conceitos
básicos/Tipos e operadores, mas apenas como ilustração, seguem dois exemplos, que devem ser familiares para
quem conhece a função printf da linguagem C:
>>> print "O fatorial de %d e' %d\n" % (5, 120)
O fatorial de 5 e' 120
>>> print "%s nasceu em %d\n%s nasceu em %d\n" % ("Adao", -4700, "Abel", 
-4600)
Adao nasceu em -4700
Abel nasceu em -4600
>>>
Para terminar o interpretador e voltar ao sistema operacional, digite:
>>> quit()
ou
>>> exit()
Aprendendo a se virar
Um dos fatores mais importantes na hora de se aprender uma nova linguagem de programação, é a de conhecer os
recursos que ela pode nos oferecer, tais como seus módulos (conjunto de funções e classes que facilitam a vida do
programador na hora de reutilizar códigos), sua sintaxe, suas funções nativas e estruturas de dados.
Se, por exemplo, após desbravar vários tutoriais por aí, você se lembra que você ouviu falar de um módulo chamado
"os", mas não sabe ao certo o que ele faz...
O Interpretador Python oferece um recurso muito interessante, que ajuda na hora de saber um pouco da
documentação de módulos, funções e classes.
Digite do interpretador:
 >>> help()
Você verá que aparecerá outro símbolo à esquerda do cursor, no lugar do ">>>"
 help>
Tente digitar 'os' para se lembrar as funcionalidades que esse módulo nos fornece:
 help> os
Interpretador interativo 6
 Help on module os:
 NAME
 os - OS routines for Mac, DOS, NT, or Posix depending on what system we're on.
 FILE
 /usr/lib/python2.4/os.py
 MODULE DOCS
 http:/ / www. python. org/ doc/ current/ lib/ module-os. html
 DESCRIPTION
 This exports:
 - all functions from posix, nt, os2, mac, or ce, e.g. unlink, stat, etc.
 - os.path is one of the modules posixpath, ntpath, or macpath
 - os.name is 'posix', 'nt', 'os2', 'mac', 'ce' or 'riscos'
 .
 .
 . (etc...)
A documentação do módulo aparecerá no prompt. Tente experimentar isso com outros módulos, funções e classes
que você ouvir por aí!
Para sair do modo de documentação, pressione "q". Para sair do modo "help>", digite "q" e dê enter.
Curiosidade: Saiba mais sobre a filosofia Python digitando no interpretador:
 >>> import this
Carregando linhas de código
Muitos dos exemplos deste livro são escritos para serem digitados, linha a linha, no interpretador. Mas, obviamente,
esta não é a melhor forma de entrar com programas. Um programa python escrito em um arquivo local, digamos,
arquivo.py, pode ser carregado pelo interpretador através de:
 import arquivo
As variáveis (incluindo-se aqui funções, classes, estruturas, constantes, etc) definidas em arquivo.py tornam-se
imediatamente acessíveis ao interpretador usando-se arquivo.nome.
Por exemplo, crie o seguinte arquivo e chame-o de fatorial.py:
def fat(n):
 if n <= 1:
 return 1
 return fat(n-1) * n 
Em seguida, entre no interpretador e digite:
>>> import fatorial
>>> fatorial.fat(5)
Análise léxica 7
Análise léxica
Voltar para a página inicial.
No capítulo 2 do Manual de Referência da Linguagem Python diz que a análise léxica é uma análise do interpretador
em sí, os programas são lidos por um parser, que divide o código em tokens.
Todo programa é dividido em linhas lógicas que são separadas pelo token NEWLINE ou NOVA LINHA, as linhas
físicas são trechos de código divididos pelo caracter ENTER. Linhas lógicas não podem ultrapassar linhas físicas
com exceção de junção de linhas, por exemplo:
if resultado > 2 \
and 1 <= 5 \
and 2 < 5:
 print ('Resultado: %f') % (d)
ou
meses_do_ano = ['janeiro', 'fevereiro', 'março',
 'abril', 'maio', 'junho',
 'julho', 'agosto', 'setembro',
 'outubro', 'novembro', 'dezembro']
Para a delimitação de blocos de códigos os delimitadores são colocados em uma pilha e diferenciados por INDENT e
DEDENT. Iniciando a pilha com valor 0 (zero) e colocando valores maiores que os anteriores na pilha. Para cada
começo de linha, o nível de endentação é comparado com o valor do topo da pilha, se o número da linha for igual ao
topo da pilha, a pilha não é alterada, se o valor for maior a pilha recebe o nível de endentação da linha e o nome
INDENT (empilhamento) se o nível de endentação for menor, então é desempilhado até chegar a um nível de
endentação recebendo o nome DEDENT (desempilhamento) e se não encontrar nenhum valor é gerado um erro de
endentação.
Abaixo um exemplo de permutação, retirado do capítulo 2.1 sobre Estrutura de linhas na Análise léxica do Manual
de Referência da linguagem (Language Reference Manual):
 def perm(l): NOVA LINHA
INDENT if len(l) <= 1: NOVA LINHA
INDENT return[1] NOVA LINHA
DEDENT r = [ ] NOVA LINHA
 for i in range(len(l)): NOVA LINHA
INDENT s = l[:i] + l[i+1:] NOVA LINHA
 p = perm(s) NOVA LINHA
DEDENT for x in p: NOVA LINHA
INDENT r.append(l[i:i+1]+x) NOVA LINHA
DEDENT return r
Indentação 8
Indentação
Voltar para a página inicial.
A endentação é uma característica peculiar na linguagem.
Enquanto que os blocos são delimitados explicitamente em C, Java e PHP por chaves e em Pascal e Fortran por
palavras-chave como then e endif, em Python blocos são delimitados por espaços ou tabulações formando uma
endentação visual; não existem símbolos de “abre” e “fecha”.
Python requer uma endentação padronizada. Em outras linguagens, como C/C++ ou JavaScript, a endentação não é
necessária devido aos delimitadores de blocos, sendo utilizada somente para melhor visualização.
Ao se usar um editor de texto comum, é fácil haver erros de endentação, sendo conveniente configurar o editor para a
endentação do Python. As IDEs que suportam Python têm, em geral, a função de endentação automática.
•• Endentação correta:
def valor1(self):
 try:
 self.c = input('Primeiro Valor: ')
 c = self.c
 return c
 except:
 print 'Inválido!'
 self.valor1()
•• Endentação incorreta:
def valor1(self):
try:
self.c = input('Primeiro Valor: ')
c = self.c
return c
except:
print 'Inválido!'
self.valor1()
O código em si está correto para os dois exemplos, mas o analisador léxico irá verificar se, em cada bloco, a
endentação e a exdentação estão coerentes. O analisador reconhecerá as diversas palavras-chave e verificará se os
blocos estão endentados de acordo com o necessário.
Compilador de Byte 9
Compilador de Byte
Voltar para a página inicial.
Python é uma linguagem de muito alto-nível como já dito, mas ela também pode compilar seus programas para que a
próxima vez que o executar não precise compilar novamente o programa, ganhando assim velocidade na execução.
Utilizando o interpretador interativo não é necessário a criação do arquivo de Python compilado, os comandos são
executados interativamente. Mas ao chamarmos um programa ou um módulo, o interpretador irá verificar a análise
léxica, sintática e irá compilar o código de alto-nível e executá-lo, esta é a máquina virtual Python.O código de byte da linguagem também é de alto-nível, ou seja, é mais legível aos seres humanos que o código de
byte do C, por exemplo. Para desassemblar um código de byte é utilizado o módulo dis da biblioteca padrão da
linguagem.
Normalmente o Python trabalha com dois grupos de arquivos:
1. Os módulos do núcleo da linguagem, sua biblioteca padrão e os módulos independentes, criados pelo usuário.
2. No núcleo do interpretador existe o analisador léxico, o analisador sintático que utiliza Estruturas de Objetos
(tempo de execução), o Compilador que aloca memória (tempo de execução) e depois do Avaliador de código
que modifica o estado atual do programa (tempo de execução), mostrando resultado para o usuário.
Variáveis e identificadores
Voltar para a página inicial.
Variáveis não precisam ser declaradas, mas precisam ser iniciadas antes de serem utilizadas. O nome das variáveis
tem que começar com uma letra, não podendo ser espaço e são case sensitive (diferenciam maiúsculas de
minúsculas). As variáveis não têm valores fixos, podem receber qualquer tipo de dado como números, strings,
funções, classes, etc; recebendo o tipo do conteúdo atual. E também existem os identificadores reservados, que são
próprios da linguagem como:
Identificadores Função
and e
assert forçar um tipo para a variável
break parar
class definição da classe
continue continuar
def definição de função
del deleção de objeto
elif não-se
else senão
except exceção
exec executar função
finally finalizar função
for definição de laço para
from importar uma variável dentro de um módulo
Variáveis e identificadores 10
global definição de variável global
if definição de laço se
import importação de módulos externos
in em
is e
lambda funções recursivas
not não
or ou
pass passar para outra função sem executá-la
print imprimir na tela
raise laço try
return retornar objeto
try definição de laço tente
while definição de laço enquanto
Comentários e docstrings
Voltar para a página inicial.
Há em todas as linguagens de programação a necessidade de documentar uma linha ou um bloco de código para
documentar o que serve aquele bloco de código. Em Python comentários são iniciados com #, tudo que estiver
depois do # será ignorado pelo interpretador, portanto considerado como comentários, o fechamento do comentário
acaba quando acabar a linha do interpretador.
As docstrings são mais comumente introduzidas no início de uma classe, de uma função ou no início do programa
para definir o escopo do software ou o escopo de métodos, seu símbolo padrão são as três aspas duplas ou simples.
Para quem está lendo o código do programa não existe muita diferença (exceto estética) entre comentários e
docstrings, mas para o usuário a diferença é marcante, pois uma docstring não ´é ignorada pelo interpretador, mas
passa a fazer parte do objeto sobre o qual ela foi definida, podendo ser acessada através do help.
Por exemplo, entre com as linhas abaixo. Note que o arquivo não contém nenhum caracter fora do conjunto ASCII
padrão (usar acentos pode dar problema no Windows):
#
# Comentarios:
#
def fat1(n):
# Entre com fat1(n) para calcular o fatorial de n
# Exemplo: fat1(5)
 if (n <= 1)
 return 1
 return n * fat1(n-1)
#
Comentários e docstrings 11
# Docstrings:
#
def fat2(n):
 '''
 Entre com fat2(n) para calcular o fatorial de n
 Exemplo: fat2(5)
 '''
 if (n <= 1)
 return 1
 return n * fat1(n-1)
Após carregar as linhas, vamos fazer alguns testes:
>>> fat1(3)
>>> fat2(3)
Note que, se você escreveu as linhas anteriores em um programa, por exemplo, fatorial.py, e incluiu o programa
usando "import fatorial", então é preciso chamar funções através de fatorial.fat1(3) e fatorial.fat2(3),
respectivamente.
Para ver como funciona a docstring, entre agora com:
>>> help(fat1)
>>> help(fat2)
Note que não existe documentação para fat1, mas fat2 tem a documentação escrita na docstring.
Tipos e operadores 12
Tipos e operadores
Voltar para a página inicial.
Python é uma linguagem de tipos dinâmicos, ou seja, não é necessário fazer casting como em Java, Pascal ou C.
Objetos
Em Python tudo é objeto. Isso quer dizer que um objeto do tipo string, por exemplo, tem seus próprios métodos.
O conceito de variável é uma associação entre um nome e um valor, mas não é necessário declarar o tipo da variável,
portanto, o tipo relacionado a variável pode variar durante a execução do programa isto implica em muitos aspectos
no uso da linguagem.
Este conceito é chamado em programação de "duck typing" (tipagem do pato) - baseado na expressão, em inglês,
devida a James Whitcomb Riley:
Quando eu vejo uma ave que caminha como um pato, nada como um pato e grasna como um pato, eu chamo
esta ave de "pato"[1]
Tipos numéricos
Existem 4 tipos numéricos:
•• inteiro (int)
•• ponto flutuante (float)
•• booleano (bool)
•• complexo (complex)
Suportam adição, subtração, multiplicação e divisão e também podem se relacionar.
Mesmo os tipos não sendo declarados explicitamente, eles sempre irão assumir um tipo de dado, abaixo, exemplos
de retornos de tipos:
•• Tipo inteiro:
>>> a = 1
>>> type(a)
<type 'int'>
Um cuidado que se deve tomar é que o tipo inteiro é de precisão infinita, ou seja, um programador descuidado pode
gerar um número inteiro que ocupe toda a memória do computador. Por exemplo, vimos anteriormente o arquivo
fatorial.py:
# Arquivo fatorial.py
def fat(n):
 if n <= 1:
 return 1
 return fat(n-1) * n
Python consegue calcular o fatorial de qualquer inteiro, retornando sempre um inteiro, com precisão total. Os limites
são apenas o tempo de processamento e a memória do computador:
>>> import fatorial
>>> a = fatorial.fat(5)
>>> a
Tipos e operadores 13
>>> b = fatorial.fat(a)
>>> b
>>> c = fatorial.fat(b) # nao faça isso!!!
>>> c # nem chega aqui
•• Tipo ponto flutuante:
>>> a = 1.0
>>> type(a)
<type 'float'>
•• Tipo booleano:
>>> a = True
>>> type(a)
<type 'bool'>
•• Tipo complexo:
>>> a = 4+3j
>>> type(a)
<type 'complex'>
E eles mudam de tipo dinamicamente por exemplo, a variável a:
>>> a = 1
>>> type(a)
<type 'int'>
>>> a = 1.0
>>> type(a)
<type 'float'>
>>>
Operadores são símbolos que atuam sobre variáveis e valores. Existem:
•• Operadores aritméticos (+, -, *, /, %, **, +=, -+, *=, /=, %=, **=):
>>> a = 1
>>> b = 2
>>> print a + b
3
ou
>>> a = 5
>>> print a**2
25
• Operadores de comparação (>, <, ==, >=, <=, <>, !=, is, in):
>>> a = 1
>>> b = 2
>>> a == b
False
Tipos e operadores 14
>>> print a > b
False
•• Operadores lógicos (and, or, not):
>>> nome = "leonardo"
>>> idade = 22
>>> nome == "leonardo" and idade < 23
True
•• Operadores de atribuição (=):
>>> a = 1
Strings
•• Substituição em strings:
A substituição em strings acontece com o operador %, para substituir strings usa-se %s, para substituir decimais
usa-se %d e para substituir floats usa-se %f.
Exemplo simples:
print "Bom dia! Hoje e' %02d/%02d/%04d" % (26, 1, 2011)
Exemplo, escrevendo a saída formatada em um arquivo:
from codecs import *
f = open (‘arquivo.txt’, ‘a’, ‘utf-8’ )
f.write (‘ %s ‘ % nome_artigo() ) #A referência %s para strings
f.close()
Referências
[1] Para mais detalhes sobre "duck typing", consulte a Wikipedia em inglês: w:en:Duck typing
Estrutura dos blocos 15
Estrutura dos blocos
Voltar para a página inicial.
Em todas as linguagens de programação existem controles de fluxos de dados, em Python também é o mesmo
sentido. Os identificadores pass, break e continue, são instruções muito usadas em controle de fluxos.
A instrução condicional if em conjunto com o elif e else:
from operadoresif operacao == '+':
 operação1 = operadores.somar(valor1, valor2)
else:
 operação2 = operadores.diminuir (valor1, valor2)
elif:
 print “Número errado!”
Bloco while:
>>> indice = 0
>>> while indice <=5:
 indice = indice + 1
 print indice
1
2
3
4
5
6
>>>
Obviamente que o bloco acima é um caso onde seria muito natural fazer um loop, especificando a priori quais os
valores que o índice deve valer.
A forma preferida é usar for. for pega seu parâmetro e percorre uma lista (que será vista no próximo capítulo,
../Estrutura de dados), repetindo o loop para todos seus valores. Como exemplo, o bloco acima pode ser reescrito
como:
for indice in [1,2,3,4,5]:
 print indice
Será visto no próximo capítulo porque a instrução acima não é equivalente a:
for indice in range(5):
 print indice
Estrutura de dados 16
Estrutura de dados
Voltar para a página inicial.
Em Python existem dois tipos de estruturas de dados:
•• Seqüências: são objetos ordenados e finitos
•• Dicionários é um conjunto de elementos de mapeamentos indexados por chaves.
As seqüências imutáveis são as strings e as tuplas, dois ou mais elementos de qualquer tipo dentro de parênteses e
separados por vírgula.
Exemplo de sequência com strings:
>>> nome = 'leonardo'
>>> len(nome)
8
>>> nome.capitalize()
'Leonardo'
>>> nome.upper()
'LEONARDO'
>>> nome
'leonardo'
>>>
Dicionários
Dicionário é o outro tipo de seqüência que associam objetos. São separados por vírgulas e delimitados por chaves e
associados por dois-pontos.
>>> dic = {1:'mar', 2:'oceano', 3:'rio'}
>>> len(dic)
3
>>> dic.items()
[(1, 'mar'), (2, 'oceano'), (3, 'rio')]
>>> dic.keys()
[1, 2, 3]
>>> dic.values()
['mar', 'oceano', 'rio']
Listas
As seqüências mutáveis são as listas. Listas são elementos entre colchetes e separados por vírgula. Em outras
linguagens chamadas de vetor.
>>> lista = [1,2,3]
>>> lista2 = [3,4,5]
>>> lista.extend(lista2)
>>> lista
[1, 2, 3, 3, 4, 5]
>>> len(lista)
6
Estrutura de dados 17
>>> lista.reverse()
>>> lista
[5, 4, 3, 3, 2, 1]
>>> lista.sort()
>>> lista
[1, 2, 3, 3, 4, 5]
>>>
Construção de listas
Existem várias formas de gerar listas de números. A mais simples é a função range, que gera uma lista de zero a n-1:
>>> range(5)
[0, 1, 2, 3, 4]
>>>
Para gerar uma lista que comece em um ponto arbitrário, passar este ponto como o início da lista:
>>> range(10, 13)
[10, 11, 12]
>>>
Caso o valor inicial seja maior ou igual ao valor final, a lista é vazia; listas decrescentes, ou listas que tenham um
passo diferente de um podem ser geradas com um terceiro parâmetro:
>>> range(5, 0)
[]
>>> range(10, 6, -2)
[10, 8]
>>>
Uma forma curiosa de gerar estas listas é construir o objeto xrange; na prática, fazer um loop com xrange ou com
range dá o mesmo resultado; para mais detalhes, consulte o help (help(xrange)):
for indice in xrange(1, 6):
 print indice
Operações com listas
Listas podem ser unidas, através de extend. Como a lista é um objeto, usa-se a forma lista.extend(lista2):
>>> lista1 = range(2)
>>> lista2 = range(2, 4)
>>> lista1.extend(lista2)
>>> lista1
[0, 1, 2, 3]
Listas também podem ser replicadas, usando-se *. Note que esta operação é comutativa:
>>> [1, 2] * 3
[1, 2, 1, 2, 1, 2]
>>> 3 * [1, 2]
[1, 2, 1, 2, 1, 2]
>>>
Estrutura de dados 18
Pilhas
Agora você deve estar se perguntando: "Sim, mas Python só oferece essas Estruturas de Dados?" Você pode não ter
reparado, mas podemos utilizar as listas nativas do Python para trabalharmos com outras estruturas, como Pilhas,
Filas, Árvores, Listas de Prioridades(Heaps), etc...
Utilizando as listas como Pilhas: Pilhas nada mais são do que listas em que a inserção e a remoção de elementos
acontece na mesma extremidade.
>>> pilha = [10, 20, 30]
>>> pilha.pop()
30
>>> pilha
[10, 20]
>>> pilha.append(50)
>>> pilha
[10, 20, 50]
>>> pilha.append(100)
>>> pilha.pop()
100
>>> pilha.pop()
50
>>> pilha
[10, 20]
>> len(pilha)
2
Utilizando as listas como Filas:
Funções 19
Funções
Voltar para a página inicial.
Funções são blocos de código com nome e argumentos (algumas funções não possuem argumentos), usadas para
realizar tarefas. Algumas funções já estão presentes no interpretador, como exemplo a usada no cálculo do seno de
um ângulo que está presente na biblioteca math.sin de python.
def NOME (argumento1, argumento2, ...):
 bloco de código
Se a função retorna algum valor (linguagens de programação chamam funções que não retornam valor de
subrotinas), usa-se a instrução "return valor". Exemplo:
 def soma(x, y):
 return x + y
Funções podem não ter argumento, neste caso a lista de argumentos será vazia:
 def hello():
 print "Hello, World!"
Os argumentos pode vir "nus", ou seguidos de "= valor". No primeiro caso, não passar este argumento para a função
dá erro, no segundo caso, o argumento toma, por default, o valor passado.
Um cuidado deve ser tomado: se o valor é variável, ele é determinado no momento da definição da função. Por
exemplo:
>>> indice = 5
>>> def função (argumento = indice):
... print argumento
>>> indice = 6
>>> função()
5
>>> print indice
6
Funções sem nome - lambda
A vantagem é que podem ser usadas dentro de expressões
 f = lambda x: x**x
a função acima substitui...
 def f(x):
 return x**x
Funções lambda podem ser divididas em:
 nome variavel: ações
Onde nome sempre será 'lambda', variável pode conter uma ou mais variáveis e ações pode ser uma potência ou
referência a uma função matemática tipo
Funções 20
 import math
 f = lambda x,y : pow(x,y)
Módulos
Voltar para a página inicial.
Cada arquivo em Python é chamado de módulo. Módulos são um conjunto de códigos como funções, classes,
variáveis, etc. Vários módulos podem se comunicar através do comando import módulo.
Importando módulos
Existem dois modos principais de chamar módulos[1], como:
>>>import wx
>>>print wx.codificação()
utf-8
ou
>>>from wx import *
>>>print codificação()
utf-8
Nos dois modos, é lido o arquivo wx.py.
Os dois modos de acesso estão corretos e não geraram erros, o funcionamento seria: procura o módulo e inicializá-o
e o outro define o escopo do módulo.
No primeiro modo (import modulo) existe um alto acoplamento devido ao modo de acesso ao módulo wx onde é
efetuada as duas etapas para cada módulo. As funções (e variáveis) do módulo wx tornam-se disponíveis precedendo
seu nome por wx., por exemplo, se em wx.py é definida uma variável A, então esta variável pode ser usada como
wx.A.
No segundo exemplo (from modulo import *) se ganharia flexibilidade de definir e reimportar todas as funções do
módulo wx, incluindo a função codificação(). As funções e variáveis do módulo tornam-se acessíveis sem precisar
prepor o wx..
Qual é o melhor método?
Um dos principios da linguagem é que There should be one-- and preferably only one --obvious way to do it[2] (numa
tradução livre Deve haver um - e apenas um - modo óbvio de fazer isso), e a importação de módulos não é exceção.
Como regra geral, deve-se usar import modulo. A principal exceção (há outras, ver a referência ) é quando a própria
documentação do módulo recomenda que se use from modulo import * (por exemplo, o tkinter)
Módulos disponíveis
Os módulos disponíveis estão armazenados na variável sys.modules, para ver quais são é preciso importar o módulo
sys:
Módulos 21
>>> import sys
>>> sys.modules
Ver também Python/Bibliotecas padrão.
Referências
[1] Importing Python Modules, por Fredrik Lundh (http:/ / effbot. org/ zone/ import-confusion. htm), no site effbot.org. Explica as diferenças
entre import móduloe from módulo import *, além de um terceiro método não descrito neste tutorial
[2] The Zen of Python (http:/ / python. org/ dev/ peps/ pep-0020/ ), site python.org
Erros e exceções
Voltar para a página inicial.
Erros são humanos e sempre ocorrem ao escrevermos programas, sejam simples ou complexos, o modo de como as
linguagens de programação nos retornam estes erros é que há mudança. Em Python, podem serem tratados muito
elegantemente.
O erro do Python é chamado de Traceback que é uma pilha criada quando ocorre a exceção. Guido van Rossum
escreveu na documentação oficial que “quando ocorre uma exceção, o interpretador procura por um bloco de
tratamento de exceções e então começa a desempilhar cada elemento da pilha de execução. Então desta forma
saberemos quantos níveis depois do tratador de erros que houve a exceção”. O que condiz com a explicação do
capítulo sobre Análise léxica.
Abaixo alguns erros e seus tracebacks:
>>> a = [5, 4, 3, 2]
>>> print a[5]
Traceback (most recent call last):
File "<stdin>", line 1, in ?
IndexError: list index out of range
Há a possibilidade de:
>>> a = 'livro'
>>> try:
... print a + 1
... except TypeError, erro:
... print "Um erro ocorreu: %s" % erro
Um erro ocorreu: cannot concatenate 'str' and 'int' objects
Erros e exceções 22
Erros são bem vindos!
Um fato importante sobre o estilo da linguagem Python é que o programa deve, preferencialmente, cometer erros e
tratá-los, ao invés de checar se a operação dará erro.
Assim, se temos um vetor v de tamanho desconhecido, porém que, normalmente, terá mais de 10 elementos, e
queremos modificar (se existir) seu décimo elemento, é possível fazê-lo de duas formas:
 ...
 if len(v) >= 10:
 v[9] = 666
 else:
 print "Erro: v tem menos de dez elementos"
ou:
 ...
 try:
 v[9] = 666
 except:
 print "Erro: v tem menos de dez elementos"
Considera-se que a segunda forma (EAFP, ou it's easier to ask for forgiveness than permission, frase atribuída a
Grace Hopper) é melhor do que a primeira (LBYL, ou look before you leap)[1].
Referências
[1] Glossary (http:/ / docs. python. org/ glossary. html), site docs.python.org
Classes 23
Classes
Voltar para a página inicial.
Criamos o objeto classe com “class nome:”, ela é composta de atributos que representam este objeto. Quando a classe
é atribuída a outro objeto, este objeto é chamado de instância da classe. Os métodos, que também são definidos para
programação orientada a objetos, são funções dentro de uma classe. Todos os métodos ou atributos da classe são
obrigados a passar por parâmetro ou argumento a palavra self antes de tudo, isso é convencionado pelo próprio
desenvolvedor, por padrão se chama self, o self foi convencionado nos parâmetros dos métodos e atributos devido a
filosofia da linguagem de estar tudo explícito, especificar de onde o valor vem. Assim os métodos são chamados
objeto.metodo (argumento1, argumento2, ...) são definidos iguais a uma função.
Os atributos da classe (ou variável da classe) podem ser instanciados em qualquer lugar da classe, e os atributos de
instância (ou variável de instância) devem ser declarados dentro dos métodos utilizando o parâmetro self.
class Nó:
 esquerda, direita, valor = None, None, 0
 def __init__(self, valor):
 # construtor dos valores
 self.esquerda = None
 self.direita = None
 self.valor = valor
class Ordenação:
 def __init__(self):
 # inicializa a raiz da árvore
 self.root = None
 def AdicionaNo(self, valor):
 return Nó(valor)
 def Inserir(self, raiz, valor):
 # inserir novo valor
 if raiz == None:
 # não há nenhum valor
 return self.AdicionaNo(valor)
 else:
 # já está na árvore
 if valor <= raiz.valor:
 # se os dados forem menores do que os armazenados
 # entra na sub-árvore do lado esquerdo
 raiz.esquerda = self.Inserir (raiz.esquerda, valor)
 else:
 # entra na sub-árvore do lado direito
 raiz.direita = self.Inserir (raiz.direita, valor)
 return raiz
Brincando com instância de classe:
Classes 24
class A:
 a = 1 # atributo publico
 __b = 2 # atributo privado a class A
class B(A):
 __c = 3 # atributo privado
 
 def __init__(self):
 print self.a
 print self.__c
a = A()
print isinstance(a, B) # ''Objeto a'' é uma instância da ''classe B''? 
Falso.
a = B() # Instancía o ''objeto a'' na ''classe B'' e imprime os 
atributos da classe.
print isinstance(a, B) # ''Objeto a'' é uma instância da ''classe 
B''?Verdadeiro.
b = B() # Instancía o ''objeto b'' na ''classe B'' e imprime os 
atributos da classe.
print isinstance(b, B) # ''Objeto b'' é uma instância da ''classe B''? 
Verdadeiro.
b = A() # Instancía o ''objeto b'' na ''classe A''.
print isinstance(b, A) # ''Objeto b'' é uma instância da ''classe A''? 
Verdadeiro.
Encapsulamento 25
Encapsulamento
Voltar para a página inicial.
Encapsulamento é a proteção dos atributos ou métodos de uma classe, em Python existem somente o public e o
private e eles são definidos no próprio nome do atributo ou método.
Atributos ou métodos iniciados por no máximo dois sublinhados e terminados por um sublinhado são privados e
todas as outras formas são públicas.
class A:
 a = 1 # atributo publico
 __b = 2 # atributo privado a class A
class B(A):
 __c = 3 # atributo privado a B
 
 def __init__(self):
 print self.a
 print self.__c
a = A()
print a.a # imprime 1
b = B()
print b.__b # Erro, pois __b é privado a classe A.
print b.__c # Erro, __c é um atributo privado, somente chamado pela 
classe.
print b._B__c # Imprime __c = 3, muito pouco utilizada, mas existe.
Herança e polimorfismo 26
Herança e polimorfismo
Voltar para a página inicial.
Deitel, em "Programando em Java", diz que "quando utilizamos herança para criar uma classe a partir da classe
existente, a nova classe herda os atributos e comportamentos dessa classe existente, podendo adicionar atributos e
comportamentos para solucionar nossas necessidades".
O polimorfismo condiz com a reutilização de código: é fato que ocorrem funções semelhantes em várias partes do
software; então definimos estas funções em uma biblioteca, e todas as outras funções que dela precisarem poderão
chamá-la sem a necessidade de reescrevê-la.
class Pessoa:
 def __init__(self, nome ='', idade=0):
 self.nome = nome
 self.idade = idade
 def getIdade(self):
 return self.idade
class PessoaCPF(Pessoa):
 
 def __init__(self, CPF, nome='', idade=0):
 Pessoa.__init__(self, nome, idade)
 self.CPF = CPF
a = Pessoa()
Pessoa.__init__(a, 'Leonardo', 22)
b = PessoaCPF('122.333.332-1', nome='', idade=0)
print a.nome # imprime Leonardo
print a.idade # imprime 22
print b.CPF # imprime 122.333.332-1
Python Avançado 27
Python Avançado
Voltar para a página inicial.
List Comprehensions
>>> lista = [[1,2,3], [4,5,6], [7,8,9]]
>>> print [[r[col] for r in lista] for col in range(len(lista[0]))]
[[1, 4, 7], [2, 5, 8], [3, 6, 9]]
>>>
>>> list_one = [2, 3, 4]
>>> list_two = [2*i for i in list_one if i > 2]
>>> list_two
[6, 8]
>>>
# somando os números de 1 a 100 :)
>>>sum(x for x in xrange(101))
>>>5050
Expresssões regulares
Python consegue lidar com expressões regulares usando a biblioteca re[1].
Expressões regulares não podem ser usadas diretamente, é preciso criar uma variável que faça a interpretação das
strings. Esta variável é de classe RegexObject. Por exemplo, para se criar uma RegexObject que identifique strings
que comecem com a sequência "abc", podemos fazer:>>> import re
>>> m = re.compile('^abc*')
Exemplo de uso:
>>> import re
>>> txt = 'Maçã'
>>> ER1 = re.compile('[a-z]', re.I)
>>> print ER1.sub('.', txt)
..çã
>>> ER2 = re.compile(r'\w', re.L)
>>> print ER2.sub('.', txt)
....
>>> uau = r'((((((((((.))))))))))\10'
>>> re.sub(uau, '.', 'zz')
Python Avançado 28
Referências
[1] Regular Expression HOWTO (http:/ / www. amk. ca/ python/ howto/ regex/ regex. html), por A.M.Kuchling, em www.amk.ca
Esta página é somente um esboço.
Ampliando-a você ajudará a melhorar o Wikilivros.
Bibliotecas padrão
Voltar para a página inicial.
•• Biblioteca math (funções matemáticas):
>>> import math
>>> x = 5
>>> math.sqrt(x)
2.2360679774997898
>>> from math import *
>>> sin(x)
-0.95892427466313845
>>> log(x)
1.6094379124341003
>>> cos(x)
0.28366218546322625
•• Biblioteca Tkinter (GUI padrão)
from tkinter import *
box = Button(text="Ok", command='exit')
box.pack()
box.mainloop()
•• Biblioteca smtplib (E-mail)
import smtplib
server = smtplib.SMTP('mail.xx.net')
# Envio de e-mail da conta @xy para a conta @xx
server.sendmail('leonardo@xy.com', 'leonardo@xx.net',
"""To: leonardo@xx.net
From: leonardo@xy.com
Subject: Teste de envio de email
Estou lhe enviando este email como um teste.
""")
server.quit()
print 'Envio OK'
•• Biblioteca time
Bibliotecas padrão 29
Com ela podemos implementar por exemplo um contador, no caso mostrado abaixo o terminal dará uma pausa de 1
segundo entre cada impressão do intervalo "range(5)".
>>> import time
>>> for i in range(5):
 print i
 time.sleep(1)
...
0
1
2
3
4
>>>
Bibliotecas externas
Voltar para a página inicial.
Urllib
Um exemplo de uso da biblioteca urllib com leitor de RSS feedparser para o uso na internet. O exemplo abaixo faz o
download do módulo feedparser depois faz a leitura do RSS da Últimas Notícias do site Terra [1].
>>> import urllib
>>> url = 'http://diveintomark.org/projects/feed_parser/feedparser.py'
>>> arq = urllib.urlopen(url)
>>> open(‘feedparser.py’, ‘w’).write(arq.read())
>>> import feedparser
>>> terra = feedparser.parse('http://rss.terra.com.br/0,,EI1,00.xml')
>>> terra.values()
[...]
>>>
Numpy
Numpy é uma biblioteca matemática de código aberto para Python, com suporte a matrizes e vetores grandes, além
de um grande número de funções matemáticas. O site oficial é http:/ / numpy. scipy. org/ . É importante lembrar que
Python possui uma biblioteca matemática padrão, chamada Math. Essa biblioteca precisa ser instalada antes de ser
usada, não vem por padrão.
O exemplo abaixo mostra o uso da biblioteca Numpy na criação de arrays com valores aleatórios, e a manipulação
desses valores.
>>> import numpy
>>> a = numpy.random.randn(25) #Cria um array com 25 valores aleatórios
>>> len(a) #Informa o tamanho do array
25
>>> a #Mostra os valores do array
Bibliotecas externas 30
array([-0.97662319, -0.91427827, -0.17596519, -1.07721448, -0.64067605,
 -1.21453417, -0.508037 , 1.0928856 , -0.4206412 , -0.40750775,
 -0.83259417, 0.41311712, -0.03811292, -0.41181049, 0.45493473,
 0.5168261 , 0.38207838, 1.27969391, -0.91343678, -0.89708382,
 -0.94028084, 0.33992957, -1.73894293, 0.5228072 , 0.57514934])
>>> a[0:10] #Mostra os valores do array, de 0 até 10
array([-0.97662319, -0.91427827, -0.17596519, -1.07721448, -0.64067605,
 -1.21453417, -0.508037 , 1.0928856 , -0.4206412 , -0.40750775])
>>> a[0:4]*2 #Multiplicação dos valores 0 até 4 por 2
array([-1.95324639, -1.82855654, -0.35193039, -2.15442897])
>>> 
Referências
[1] http:/ / www. terra. com. br
Programação com GUI
Voltar para a página inicial.
Tkinter
Ver artigo principal, Python/Tkinter
Baseada em Tcl/Tk, o Tkinter é a interface padrão do Python.
from Tkinter import *
class App:
 def __init__(self, master):
 frame = Frame(master)
 frame.pack()
 self.button = Button(frame, text="QUIT", fg="red",
 command=frame.quit)
 self.button.pack(side=LEFT)
 self.hi_there = Button(frame, text="Hello",
 command=self.say_hi)
 self.hi_there.pack(side=LEFT)
 def say_hi(self):
 print "hi there, everyone!"
root = Tk()
app = App(root)
root.mainloop()
Programação com GUI 31
WxPython
wxPython é um wrapper da biblioteca wxWindows.
from wx import *
ID_ABOUT = 101
ID_EXIT = 102
class MyFrame(wx.Frame):
 def __init__(self, parent, ID, title):
 wx.Frame.__init__(self, parent, ID, title,
 wx.DefaultPosition, wx.Size(200, 150))
 self.CreateStatusBar()
 self.SetStatusText("This is the statusbar")
 menu = wx.Menu()
 menu.Append(ID_ABOUT, "&About", "More information about this 
program")
 menu.AppendSeparator()
 menu.Append(ID_EXIT, "E&xit", "Terminate the program")
 menuBar = wx.MenuBar()
 menuBar.Append(menu, "&File");
 self.SetMenuBar(menuBar)
class MyApp(wx.App):
 def OnInit(self):
 frame = MyFrame(None, -1, "Hello from wx.Python")
 frame.Show(True)
 self.SetTopWindow(frame)
 return True
app = MyApp(0)
app.MainLoop()
PyGTK
PyGTK é um wrapper para o Python criado por James Henstridge, construído sobre o GIMP Toolkit (GTK) a
biblioteca usada pelo GNOME e muitas outras aplicações para Linux.
import gtk
class HelloWorld(gtk.Window):
 def __init__(self):
 gtk.Window.__init__(self)
 self.connect("delete_event", gtk.main_quit)
 self.set_border_width(10)
 self.set_title("Hello World!")
 hbox = gtk.HBox()
 self.add(hbox)
Programação com GUI 32
 self.button1 = gtk.Button("Button 1")
 self.button1.connect("clicked", self.button_pressed_cb)
 hbox.pack_start(self.button1)
 self.button2 = gtk.Button("Button 2")
 self.button2.connect("clicked", self.button_pressed_cb)
 hbox.pack_start(self.button2)
 def button_pressed_cb(self, button):
 print "Hello again - %s was pressed" % button.get_label()
if __name__ == "__main__":
 win = HelloWorld()
 win.show_all()
 gtk.main()
PyQt
PyQT é um wrapper da linguagem Python para a biblioteca Qt, que é a base do KDE (ambiente desktop para
sistemas operacionais parecidos com unix), como o Linux, por exemplo.
O primeiro programa é o tradicional "Hello, world!" ou "Alô, mundo!", e mostra a facilidade de escrever na versão 4
do Qt.
#!/usr/bin/env python
 
import sys
from PyQt4 import Qt
 
# We instantiate a QApplication passing the arguments of the script to 
it:
a = Qt.QApplication(sys.argv)
 
# Add a basic widget to this application:
# The first argument is the text we want this QWidget to show, the 
second
# one is the parent widget. Since Our "hello" is the only thing we use 
(the 
# so-called "MainWidget", it does not have a parent.
hello = Qt.QLabel("<h2>Hello, World</h2>")
 
# ... and that it should be shown.
hello.show()
 
# Now we can start it.
a.exec_()
Esta é uma versão um pouco mais complicada do "Hello World":
import sys
from qt import *
Programação com GUI 33
class HelloButton(QPushButton):
 def __init__(self, *args):
 QPushButton.__init__(self, *args)
 self.setText("Hello World")
class HelloWindow(QMainWindow):
 def __init__(self, *args):
 QMainWindow.__init__(self, *args)
 self.button=HelloButton(self)
 self.setCentralWidget(self.button)
def main(args):
 app=QApplication(args)
 win=HelloWindow()win.show()
 app.connect(app, SIGNAL("lastWindowClosed()"), app, SLOT("quit()"))
 app.exec_loop()
if __name__=="__main__":
 main(sys.argv)
Pygame
Pygame é uma biblioteca multiplataforma construída sobre a SDL permitindo a criação de jogos e programas
multimídia.
import sys, pygame
pygame.init()
tam = width, height = 320, 240
vel = [2, 2]
pet = 0, 0, 0
tela = pygame.display.set_mode(tam)
bola = pygame.image.load("image.png")
bolarc = bola.get_rect()
tela.fill(pet)
tela.blit(bola, bolarc)
pygame.display.flip()
Tkinter 34
Tkinter
Tkinter é uma biblioteca padrão, que acompanha a distribuição oficial de Python. Tkinter é baseada no toolkit
Tcl/Tk, da linguagem Tcl.
Índice
•• Primeiro programa
•• Widgets
•• Ligando eventos a callbacks
Python Wikipedia Bot
Voltar para a página inicial.
A usabilidade do bot pode ser encontrada no manual do bot escrito na wikipedia em Como usar bots.
•• Exemplo simples de chamada do artigo na tela da interface preferida no config.py:
>>>
>>> import wikipedia
>>> site = wikipedia.getSite('pt', 'wikibooks')
>>> artigo = wikipedia.Page(site, 'Python')
>>> texto = artigo.get()
>>> gui = wikipedia.ui.editText(texto)
...
Referências 35
Referências
Voltar para a página inicial.
• Site Oficial da Linguagem Python [1]
• Documentação oficial [2]
• ActiveState Python Cookbook [3]
• Java vs. Python por Steve Ferg [4]
• Arquitetura Python [5]
• Dive into Python por Mark Pilgrin [6]
• Comunidade brasileira de Python [7]
• Python na Prática por Christian Reis [8]
•• [news:comp.lang.python Notícias da news:comp.lang.python]
• How to Think Like a Computer Scientist: Learning with Python [9]
Referências
[1] http:/ / www. python. org
[2] http:/ / docs. python. org/
[3] http:/ / aspn. activestate. com/ ASPN/ Cookbook/ Python
[4] http:/ / www. ferg. org/ projects/ python_java_side-by-side. html
[5] http:/ / wiki. cs. uiuc. edu/ cs427/ PYTHON
[6] http:/ / diveintopython. org
[7] http:/ / www. pythonbrasil. com. br
[8] http:/ / www. async. com. br/ projects/ pnp/ pnp
[9] http:/ / greenteapress. com/ thinkpython/
Fontes e Editores da Página 36
Fontes e Editores da Página
Introdução  Fonte: http://pt.wikibooks.org/w/index.php?oldid=186089  Contribuidores: Adriano Moreira, Helder.wiki, LeonardoG, Marcos Antônio Nunes de Moura, The fabio, 3 edições
anónimas
Instalação  Fonte: http://pt.wikibooks.org/w/index.php?oldid=233163  Contribuidores: Albmont, Andrikmb, Jonas AGX, Jorge Morais, LeonardoG, Voyeg3r, Wbrito, 7 edições anónimas
Conceitos básicos  Fonte: http://pt.wikibooks.org/w/index.php?oldid=186074  Contribuidores: Andrikmb, LeonardoG
Interpretador interativo  Fonte: http://pt.wikibooks.org/w/index.php?oldid=234265  Contribuidores: Albmont, Andrikmb, Jonas AGX, LeonardoG, The fabio, 5 edições anónimas
Análise léxica  Fonte: http://pt.wikibooks.org/w/index.php?oldid=186075  Contribuidores: Jonas AGX, LeonardoG, 2 edições anónimas
Indentação  Fonte: http://pt.wikibooks.org/w/index.php?oldid=186084  Contribuidores: Albmont, Edudobay, Jorge Morais, LeonardoG, The fabio, 2 edições anónimas
Compilador de Byte  Fonte: http://pt.wikibooks.org/w/index.php?oldid=186078  Contribuidores: João Jerónimo, LeonardoG, 1 edições anónimas
Variáveis e identificadores  Fonte: http://pt.wikibooks.org/w/index.php?oldid=186088  Contribuidores: João Jerónimo, LeonardoG
Comentários e docstrings  Fonte: http://pt.wikibooks.org/w/index.php?oldid=186077  Contribuidores: Albmont, LeonardoG
Tipos e operadores  Fonte: http://pt.wikibooks.org/w/index.php?oldid=208370  Contribuidores: Albmont, Franprarod, LeonardoG, 1 edições anónimas
Estrutura dos blocos  Fonte: http://pt.wikibooks.org/w/index.php?oldid=197931  Contribuidores: Albmont, LeonardoG
Estrutura de dados  Fonte: http://pt.wikibooks.org/w/index.php?oldid=197933  Contribuidores: Albmont, LeonardoG, 1 edições anónimas
Funções  Fonte: http://pt.wikibooks.org/w/index.php?oldid=200920  Contribuidores: Ademarsv, Albmont, Jonas AGX, LeonardoG, Voyeg3r, 1 edições anónimas
Módulos  Fonte: http://pt.wikibooks.org/w/index.php?oldid=186086  Contribuidores: Albmont, LeonardoG
Erros e exceções  Fonte: http://pt.wikibooks.org/w/index.php?oldid=186079  Contribuidores: Albmont, LeonardoG
Classes  Fonte: http://pt.wikibooks.org/w/index.php?oldid=186076  Contribuidores: Albmont, LeonardoG, 1 edições anónimas
Encapsulamento  Fonte: http://pt.wikibooks.org/w/index.php?oldid=210338  Contribuidores: Albmont, Jorge Morais, LeonardoG, 3 edições anónimas
Herança e polimorfismo  Fonte: http://pt.wikibooks.org/w/index.php?oldid=186083  Contribuidores: Albmont, Edudobay, LeonardoG
Python Avançado  Fonte: http://pt.wikibooks.org/w/index.php?oldid=234263  Contribuidores: Albmont, Dante Cardoso Pinto de Almeida, Jonas AGX, LeonardoG, Marcos Antônio Nunes de
Moura, 4 edições anónimas
Bibliotecas padrão  Fonte: http://pt.wikibooks.org/w/index.php?oldid=234264  Contribuidores: Albmont, Jonas AGX, LeonardoG, 1 edições anónimas
Bibliotecas externas  Fonte: http://pt.wikibooks.org/w/index.php?oldid=229324  Contribuidores: Albmont, Jonas AGX, LeonardoG, Voyeg3r
Programação com GUI  Fonte: http://pt.wikibooks.org/w/index.php?oldid=218922  Contribuidores: Albmont, Jorge Morais, LeonardoG, Lou cai, Marcos Antônio Nunes de Moura, 4 edições
anónimas
Tkinter  Fonte: http://pt.wikibooks.org/w/index.php?oldid=207814  Contribuidores: Albmont
Python Wikipedia Bot  Fonte: http://pt.wikibooks.org/w/index.php?oldid=186092  Contribuidores: LeonardoG
Referências  Fonte: http://pt.wikibooks.org/w/index.php?oldid=186093  Contribuidores: Helder.wiki, LeonardoG, OsvaldoGago
Fontes, Licenças e Editores da Imagem 37
Fontes, Licenças e Editores da Imagem
Imagem:Rekopis chopin.jpg  Fonte: http://pt.wikibooks.org/w/index.php?title=Ficheiro:Rekopis_chopin.jpg  Licença: Public Domain  Contribuidores: Andreagrossmann, Kevyn, Maire, Man
vyi, Niki K, Subitosera, Tsca
Licença 38
Licença
Creative Commons Attribution-Share Alike 3.0
//creativecommons.org/licenses/by-sa/3.0/

Outros materiais