O documento apresenta Python como linguagem de programação, discutindo seus objetivos, características e exemplos de programação. As principais seções incluem uma introdução à linguagem, características como tipagem dinâmica e multiplataforma, e exemplos de controle de fluxo, orientação a objetos, módulos e programas que utilizam Python.
1. Grupo – 1
Júlio César Eiras Melanda – 14267
Emmanuel Ferreira Borges - 13675
Wellington dos Santos Flauzino – 13739
Universidade Federal de Itajubá - 27/05/09
2. Conteúdo
Objetivos
O que é Python
Características Importantes
− Paradigma
− Compilação
− Tipagem
− Escopo de variáveis
− Multiplataforma
− Estruturas de dados nativas
− Outras características
3. Conteúdo (cont.)
Programando
− Começando...
− Sintaxe básica
− Fora do interpretador
− Controle de fluxo – seleção
− Controle de fluxo – laço
− Controle de fluxo – laço
− Subprogramas
− Orientação a Objetos
− Programação funcional
5. Objetivos
Apresentar para a turma a linguagem de programação Python
em sua versão 2.x pois houve quebra de compatibilidade na
versão 3.0 que ainda não é largamente usada..
Desta forma, serão abordados tópicos referentes ao projeto da
linguagem, relacionando à matéria estudada, além de alguns
exemplos de como funciona a programação nesta linguagem
que está entre as que mais vem crescendo em importância nos
últimos anos.
6. O que é Python
Python é uma linguagem de programação poderosa e fácil de
aprender que possui estruturas de alto nível, com uma abordagem
simples e efetiva à programação orientada a objetos. [1]
Foi criada no início da década de 90 por Guido van Rossum na
Holanda no Stichting Mathematisch Centrum. Todos os releases,
exceto 1.6, 1.6.1 e 2.0 são distribuídos sob a GPL-compatível. [2]
O nome vem do show da BBC “Monty Python's Flying Circus”, e
não das cobras de mesmo nome.[1]
Python é muito versátil podendo ser usada em aplicativos Web do
lado servidor, jogos, programas de controle e configuração de
sistemas, scripts, editores de imagens, music players, Web
browsers e muito mais.
9. Características Importantes
Tipagem
− Dinâmica
− Forte
Escopo de variáveis
− Estático com vinculação dinâmica
− Podem ser acessados diretamente:
Variáveis locais
Variáveis globais
Variáveis externas (nomes pré-definidos)
10. Características Importantes
Multiplataforma
− Windows
− GNU/Linux
− MacOS
− PalmOS
− Symbian
Estruturas de dados nativas
− Listas
− Dicionários
− Tuplas
− Conjuntos
11. Características Importantes
Outras características
− Tudo é objeto (inclusive tipos de dados)
− Tipo nativo para números complexos
− Extensa biblioteca padrão
− Suporta coerção (dentro dos limites impostos pela
tipagem forte)
13. Começando...
Na programação interativa, basta abrir o interpretador e digitar
os comandos
>>> print “Olha eu aqui!” #isto é um comentário
Olha eu aqui!
>>> x = '3' #Não precisa declarar x
>>> x #Mostra o objeto vinculado ao nome x
'3'
14. Sintaxe Básica
Blocos são definidos por identação
>>> i = 0 #Sem ';' no final da instrução
>>> while i < 2: #Sem begin ou {
... print i, #vírgula evita quebra de linha
... i += 1 #operador de atribuição composto
... #sem end ou }
0 1
O ':' indica que a próxima instrução faz parte
de um bloco
15. Fora do interpretador
Código fonte em arquivo .py ou .pyw (no Windows)
Exemplo:
#!/usr/bin/env python
#-*- coding: utf8 -*-
#mentira.py
'''Mostra uma mentira na tela'''
print “Não fui eu!!!”
Primeira linha para chamar o interpretador python (somente em
Unix)
Segunda linha conta para o interpretador qual a codificação do
arquivo. Sem ela, é levantada uma exceção se houver
caracteres não ASCII.
16. Fora do interpretador (cont.)
A terceira linha é um comentário com o nome do arquivo
python. É convenção colocar este comentário em todos os
módulos (arquivos) criados.
A quarta linha é uma dosctrnig (texto de documentação). Todos
objetos devem ter uma docstring antes de começar com as
instruções propriamente (convenção).
Finalmente a instrução que será interpretada e executada
17. Controle de fluxo - seleção
Em python não existe switch
if x < 0:
pass #usado para não fazer nada
else:
pass
if y == 1: #if e elif funcionam como cases
pass #com a vantagem de aceitar
elif y > 2: #expressões
pass
else: #Faz o papel do default
pass
18. Controle de fluxo - seleção
● Fazer um switch usando
dicionários:
def case_1(): x = raw_input()
print "um" try: #pega excessão
def case_2(): switch[x]()
print "dois" except:
def case_3(): print "default"
print "tres"
switch ={'1':case_1,
'2':case_2,
'3':case_3}
19. Controle de fluxo - laço
Temos duas instruções para laços – for e while (não tem do)
while executa um laço condicional pós-teste
while x >= 0:
y = x * x
x -= 1
for executa iteração sobre uma lista
for i in [1, 2 ,3 ,4]:
print (' i vale %d') % i
Podemos gerar listas com a função range()
>>> range(5)
[0, 1, 2, 3, 4]
20. Controle de fluxo - laço
Para controle com instruções localizadas pelo usuário temos as
instruções break e continue do mesmo modo que em C
Para os casos em que o laço terminar normalmente significa
algo, usa-se a instrução else
for i in range(2, 10):
for n in range(2, i):
if i % n == 0:
print i, '=', n, '*', i/n
break
else:
print i, 'é um número primo'
21. Subprogramas
Todos subprogramas são funções
Funções sem return, ou com return sem parâmetros retornam
None
def fib(n):
''' Calcula fibonacci até n '''
a, b = 0, 1 #Atribuições simultâneas
while b < n:
print b
a, b = b, a + b #Avalia da esquerda
#para a direita
23. Orientação a Objetos
● Tudo é objeto, da estrutura mais simples à mais complexa
● Classes
class MinhaClasse(SuperClasse1):
''' Docstring qualquer '''
atributo1 = 'valor do atributo 1'
_atributo2 = 9
def __init__(self, atributo1, atributoS):
self.atributo1 = atributo1
SuperClasse1.__init__(atributoS)
def metodo1(self, *params):
pass
24. Orientação a objetos
● Python possui herança múltipla
● Todo método de classe recebe o parâmetro self
● Atributos não públicos : _atributo2
● Método __init__ é o primeiro a ser executado
● __init__ não é um construtor
25. Orientação a objetos (cont.)
x = classe() #Instanciando...
y = classe2(param)
x.metodo1(param1, param2) #utilizando métodos
z = y.troca1(a, b)
var = x.atributo1 #utilizando atributo
y.atributo2 = 'Arara' #'setando' atributos
26. Programação funcional
● filter(func, lista) retorna uma sequência com os itens da lista
para os quais func é verdadeiro
def f(x): return x % 2 != 0 and x % 3 != 0
>>> filter(f, range(2, 25))
[5, 7, 11, 13, 17, 19, 23]
● map(func, lista) aplica func(item) em cada item da lista
retornando uma lista de valores retornados por func(item)
def f(x): return x*x*x
>>> map(f, range(1, 5))
[1, 8, 27, 64] # códigos extraídos de [1]
27. Programação funcional (cont.)
● reduce(func, lista) aplica sucessivamente func aos elementos
de lista dois a dois, retornando um único valor
def add(x, y): return x + y
>>> reduce(add, range(1, 11))
55
● Funções lambda: cria funções anônimas simples
def incrementa(n)
return lambda x: x + n #somente uma
>>> f = incrementa(20) #expressão
>>> f(20)
40
29. Módulos (cont.)
● Jogos
– Pygame
● Imagens
– PyOpenGL
– PyOgre
– Soya 3D
– Panda 3d
● Web
– Django
– TurboGears
– Zope
30. Programas que usam Python
● YUM
● Wicd
● BitTorrent
● ForecastWatch
● Wing IDE
● Blender (renderização de imagens)
● OpenOffice
● Scribus
● Vim
31. Programas que usam Python
(cont.)
● GIMP
● Inkscape
● Poser
● Jogos
– Battlefield 2 (Windows)
– Civilization IV (Windows)
– Frequency (PS2)
– Star Trek Bridge Commander (Windows)
– Vegastrike (Multiplataforma)
– Frets On Fire