Escolar Documentos
Profissional Documentos
Cultura Documentos
Programador amador
desde 1988
Programador
prossional desde
1991
Programador Python
desde 2000
Programador Django
desde 2008
Introduo e Histria
Python
Surgiu em 1989
Tipagem dinmica
Compilada + Interpretada
Verses de Python
Python 2.7
Python 3.2
Evoluo da linguagem
Python 2.7
Python 3.2
Evoluo da linguagem
Comentrios
Operadores
Aritmticos: +, -,
*, /, //, **, %
Operadores
Aritmticos: +, -,
*, /, //, **, %
Diviso:
/ ponto utuante
// inteiro
3
>>> bool( 3 > 2 ), bool( 2 > 3)
(True, False)
>>> bool( 3 <= 2 ), bool( 2 < 3)
(False, True)
>>> bool( 3 == 2 ), bool( 2 == 3)
(False, False)
>>> bool( 0 ), not bool( None )
(False, True)
>>> bool( ["a"] ), not bool( "abc" )
(True, False)
>>> bool( ('a','b') ) and \
not bool( "abc" )
False
>>> bool( ('a','b') ) or \
not bool( "abc" )
True
Lgica
bool()
True, False
Atribuio "aumentada":
+=, -=, *=, /=, //=, **=,
%=, |=, &=, ^=, <<= e
>>=
a, b = b, a
(a, b) = (b, a)
Referncias
p1 = PessoaFisica()
p1
CONTADOR DE
REFERNCIAS
Referncias
p1 = PessoaFisica()
p2 = p1
p1 p2
CONTADOR DE
REFERNCIAS
Referncias
p1 = PessoaFisica()
p2 = p1
del p1
p2
CONTADOR DE
REFERNCIAS
Referncias
p1 = PessoaFisica()
p2 = p1
del p1
del p2
CONTADOR DE
REFERNCIAS
Referncias
p1 = PessoaFisica()
p2 = p1
del p1
del p2
Destruio do objeto
CONTADOR DE
REFERNCIAS
Comandos
a = input("A:")
b = input("B:")
if a > b:
print "A maior que B"
elif b > a:
print "B maior que A"
else:
print "A e B so iguais"
print ("A maior" if a > b \
else "A no maior")
Comando if/elif/else
Comando de deciso.
Executa o bloco de
cdigo em if ou elif caso
a condio for
verdadeira.
Se nenhuma condio
for verdadeira executa o
bloco else
Executa o bloco de
cdigo, em loop,
enquanto a condio for
verdadeira
Fora a iterao de um
loop (e a vericao de
uma condio no caso
do loop while)
import sys
for linha in sys.stdin:
if not linha.strip(): continue
if "FIM" in linha: break
print "#", linha.rstrip()
else:
print "# FIM DO ARQUIVO"
>>> a = range(10)
>>> print a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> for i in a:
... print i,
...
0 1 2 3 4 5 6 7 8 9
Comando break
Interrompe o loop
Um loop interrompido
com break no executa
os comandos da clusula
'else'
import sys
s1, s2 = "String1", "String2"
obj = object()
f = open("/tmp/out.txt", "w")
print s1 # String1\n
print s1, s2 # String1 String2
print s1, # String1!
print s2 # String2
print obj # <object .. 0xXX>
print >>f, s1, s2 # >out.txt
print >>sys.stderr, "ERRO!"
f.close()
$ cat /tmp/out.txt
String1 String2
Comando print
Imprime informaes na
tela
No executa nada
Remove a referncia a
um objeto
Remove elementos de
collections
Quando as referncias
chegam a zero o objeto
entra na la do garbage
collector que ir liberar
os recursos desse objeto
>>> exec "a = 1"
>>> a
1
>>> exec "if a: print 'verdadeiro'"
verdadeiro
Comando exec
Removido nos
mdulos .pyo
(executados com o
parmetro -O/-OO do
interpretador python)
Tipos de dados
Tipos de dados
-2147483648 e
2147483647 (32b)
-NUMERO e
+NUMERO (64b)
>>> type(50)
<type 'int'>
>>> type(0xFF) # Hexadecimal
<type 'int'>
>>> type(034) # Octal
<type 'int'>
>>> 50, 0xFF, 034
(50, 255, 28)
>>> type(50L)
<type 'long'>
>>> type(0xFFFFFFFFFF) # Hexadecimal
<type 'long'>
>>> 0xFFFFFFFFFF # Hexadecimal
1099511627775L
>>> 2147483647 + 1
2147483648L
Inteiros int / long
-2147483648 e
2147483647 (32b)
-NUMERO e
+NUMERO (64b)
Promoo automtica
de tipo
"L" identicando.
Prera o "L"
maisculo
Memria o limite
>>> type(1.5)
<type 'float'>
>>> type(7e-5)
<type 'float'>
>>> type(1e10)
<type 'float'>
>>> 7e-5
6.9999999999999994e-05
>>> print 7e-5 - 7e-3
-0.00693
>>> 7e-5 - 7e-3
-0.0069300000000000004
Ponto utuante oat
Ponto utuante
oat(x)
Complexos complex(i,
j)
2+2j, 5j
>>> type(True)
<type 'bool'>
>>> type(False)
<type 'bool'>
>>> int(True)
1
>>> int(False)
0
Booleanos bool
Booleano bool(x)
True e False
Valores Falsos:
__nonzero__() ou
__len__() retornam 0
Seqncias
So seqncias:
Strings (imutvel)
Listas (mutvel)
Tuplas (imutvel)
Indexveis
Iterveis
"Fativeis" (slice)
List comprehension
Indexao e Slicing
Indexao:
Slicing
seq[incio:m:intervalo]
String str(x)
docstrings
Mtodos teis:
"xyz".strip("xz") "y"
'teste1'.startswith('teste') True
'func_test'.endswith('test') True
'abracadabra'.count('a') 5
Lista list(x)
[ 1, 2, 3 ], list('seq')
Mutvel
lista[2] = 'spam'
lista + ['eggs']
Listas list
Mtodos teis:
Tupla tuple(x)
( 1, 2, 3 ), tuple([1,2,3])
Imutvel
Dicionrio dict(x)
dict(k1=v1, k2=v2)
Mutvel
dicionario['chave nova'] = 1
Mtodos teis:
{'a':1}.get('b', 0) 0
{'a':1}.setdefault('b', 0) 0 / d['b'] = 0
le("/etc/passwd")
0 Sem buffer
1 Com buffer
+N Tamanho do buffer
Mtodos teis:
f.read(5) 'linha'
Iterador iter(x)
iter([1,2,3])
Funo:
def funcao(param1, param2, param3="default",
*params, **dicparams): ...
Funo annima:
lambda p1, p2, p3=1, *ps, **dps: ...
Pode-se enviar
mensagens para a funo
geradora via
mtodo .send()
Comandos:
try:/except:/else:/nally: tratamento de
excees.
raise
Mdulo:
Atributos do mdulo:
http://pypi.python.org/pypi/pip
Virtualenv
Instalar virtualenv
virtualenv nome_do_ambiente
Ativando um ambiente
source nome_do_ambiente/bin/activate
Django
Django
Internacionalizao regionalizao
Pattern MVC
Pattern MTV
Baixar do site:
http://djangoproject.com/download/
Descompactar
Agenda de eventos
Utilitrio django-admin.py
./manage.py runserver
http://localhost:8000/
Testando
Gerenciando
manage.py manage.py
Comando Descrio
syncdb Cria tabelas no banco de dados
dumpdata --format F [aplicao] Descarrega dados da aplicao em XML ou JSON
loaddata fixture Carrega dados no banco de dados
shell Interpretador Python com modelos de dados
createsuperuser --username --email Cria um usurio administrador
runserver [endereo:porta] Inicia o servidor Web de desenvolvimento
startapp [aplicao] Cria uma nova aplicao no projeto
Aplicaes
Exemplos:
Sistema de comentrios
blog
tags
autenticaes alternativas
etc.
Aplicaes
Aplicaes
(aula) aula/gerenciador$ ./manage.py startapp agenda
(aula) aula/gerenciador$ ls
__init__.py agenda manage.py* settings.py urls.py
(aula) aula/gerenciador$ ls agenda
__init__.py models.py tests.py views.py
Aplicaes
from django.conf.urls.defaults import *
# Uncomment the next two lines to enable the admin:
# from django.contrib import admin
# admin.autodiscover()
urlpatterns = patterns('',
# Example:
# (r'^gerenciador/', include('gerenciador.foo.urls')),
(r'^$', 'agenda.views.index'),
# Uncomment the admin/doc line below and add 'django.contrib.admindocs'
# to INSTALLED_APPS to enable admin documentation:
# (r'^admin/doc/', include('django.contrib.admindocs.urls')),
# Uncomment the next line to enable the admin:
# (r'^admin/', include(admin.site.urls)),
)
Dizendo "Ol"
Arqui vo:
urls.py
# -*- encoding: utf-8 -*-
from django.http import HttpResponse
def index(request):
return HttpResponse(u"Ol mundo!")
Dizendo "Ol"
Arqui vo:
agenda/
views.py
(aula) aula/gerenciador $ ./manage.py runserver
Validating models...
0 errors found
Django, using settings 'gerenciador.settings'
Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
Dizendo "Ol"
Dizendo "Ol"
from django.db import models
class ItemAgenda(models.Model):
data = models.DateField()
hora = models.TimeField()
titulo = models.CharField(max_length=100)
descricao = models.TextField()
Models
Arqui vo:
agenda/
models.py
ItemAgenda
data: Date
hora: Time
titulo: Varchar(100)
descricao: Text
Models
Tipos de campos Tipos de campos Tipos de campos Tipos de campos Tipos de campos
BooleanField EmailField IntegerField SmallIntegerField URLField
CharField FileField IPAddressField PositiveSmallIntegerField XMLField
DateField FilePathField TextField CommaSeparatedIntegerField TimeField
DateTimeField FloatField SlugField NullBooleanField
AutoField DecimalField ImageField PositiveIntegerField
Opes dos campos Opes dos campos Opes dos campos Opes dos campos
null db_index help_text unique_for_month
blank db_tablespace primary_key unique_for_year
choices default unique verbose_name
db_column editable unique_for_date
Congurando
J vem preenchido
Arquivo auto-explicativo
http://docs.djangoproject.com/en/dev/ref/settings/#ref-settings
Congurando
Usaremos o SQLite3
A linguagem propositadamente
construda para desetimular a incluso de
lgica dentro dos templates
Campos
Widget
Adicionar a
funcionalidade de
remoo
de item com
conrmao
Agenda Multiusurio
Segurana
Aplicao: django.contrib.auth
Requer aplicaes:
django.contrib.sessions
django.contrib.contenttypes
Models:
User
Group
Permission
Internacionalizao e Localizao
Cache multi-backend
Python
http://www.python.org/
http://www.python.org.br/
Django
http://www.djangoproject.com/
http://www.djangobook.com/
http://www.djangobrasil.org/
Geral
http://www.pythonologia.org/
http://triveos.ludeos.com.br/
Cursos online
http://www.ludeos.com.br
http://db.tt/j2wwFvX3