2. Quem sou eu?
Ygor Mutti (aka Mamutti)
Técnico em desenvolvimento de software
Aluno de Ciências da Computação na UFBA
Estudo tecnologias livres
Blog
http://icaju.com
Contato:
ygor@icaju.com
@Mamutti
3. Introdução
Guido Van Rossum, o BDFL
Monty Python's Flying Circus
import this
Interpretada (bytecode)
Modo interativo
Tipagem dinâmica e forte
Plataformas
Web
Desktop
Mobile
4. Introdução
Batteries included
PYPI
Tudo é objeto
Multiparadigma
Procedural
Funcional
Sintaxe clara e concisa
Auto-documentada
Intermezzo
5. Sintaxe
Chaves? Pra quê?
Mesma indentação = mesmo bloco
Mantenha o padrão!
Comentários
Docstrings: ''' ''' ou ””” ”””
Pydoc
help()
Linha: #
#!/usr/bin/python
# -*- coding: utf-8 -*-
Case sensitive
6. Hello World! - Exercício
Objetivos (K&R)
Criar o código em algum lugar
Executá-lo
Ver para onde sua resposta foi
Código:
print 'Hello World!'
7. Controle de fluxo
if
if condicao:
bloco_de_codigo
elif condicao:
bloco_de_codigo
elif condicao:
bloco_de_codigo
else:
bloco_de_codigo
if condicao: comando
variavel = valor1 if condicao else valor2
8. Controle de fluxo
break
continue
while
while condicao:
bloco_de_codigo
continue
break
else:
bloco_de_codigo
9. Controle de fluxo
for
for referencia in sequencia:
bloco_de_codigo
continue
break
else:
bloco_de_codigo
# Para o for à moda antiga usamos range(), que gera uma
# sequência
for referencia in range(inicio, fim, passo)
bloco_de_codigo
continue
break
else:
bloco_de_codigo
10. Operadores
Atribuição: =
a, b = b, a
Lógicos (curto-circuito)
and
or
not
Identidade:
(not) is
Pertencimento
(not) in
14. Fibonacci – Exercício
Imprima os 10 primeiros termos da série
Use conceitos novos vistos em Python
Quanto mais simples, melhor
Compare o tamanho e a legibilidade do código
com outras linguagens
15. Resposta
a, b = 0, 1
for i in range(10):
print b
a, b = b, a + b
16. Primos – Exercício
Imprima os números primos no intervalo
fechado de 2 a 20
Se o número não for primo, mostre quais
números podem ser multiplicados para obtê-lo
Dica: use o else e o break do laço for
17. Resposta
for n in range(2, 21):
for div in range(2, n):
if n % div == 0:
print n, ' = ', n / div, ' * ', div
break
else:
print n, 'é primo.'
19. Funções
def
# Declarando
def funcao():
'''Aqui descrevemos o que a função faz.'''
pass
return valor # opcional
# Chamando
funcao()
20. Funções
Parâmetros
Não existe sobrecarga de assinaturas
Tipos de parâmetros:
Simples (obrigatórios)
Com valor default (opcionais)
Lista de argumentos
Dicionario de argumentos
Namespace próprio
Ofusca variáveis globais
Global
Funções embutidas
21. Fatorial – Exercício
Crie uma função fat recursiva que calcule o
fatorial de um inteiro
Documente-a usando uma docstring
Execute help(fat) e observe o resultado
22. Resposta
def fat(inteiro):
'''Retorna o fatorial de um número inteiro.”
if inteiro == 1:
return 1
else:
return inteiro * fat(inteiro - 1)
24. Módulos
import, from, as, *
# Usos mais comuns
import modulo_ou_pacote
import pacote.modulo
# Importando um módulo específico dentro de um
pacote
from pacote import modulo
# Importando tudo (__all__) do pacote para o
namespace atual
from pacote import *
# Alias de importações
import modulo_ou_pacote as alias
from pacote import modulo as alias
25. Pacotes
Pastas com módulos
Facilitam a organização
__init__.py
Pode ser um arquivo vazio
Pode conter código de inicialização
Define quais módulos são importados com *
26. Biblioteca padrão
Mais tipos (decimal, csv, datetime)
Extensão dos tipos embutidos (string)
Funções do interpretador (sys)
Acesso ao sistema operacional (os)
Expressões regulares (re)
Persistência (anydbm, pickle, sqlite3, API)
GUI (TkInter)
Threads (thread, threading, etc)
E muito mais!