If you can't read please download the document
Upload
armandoroque
View
2.584
Download
1
Embed Size (px)
Citation preview
Technical Border
Mini curso Python
Cuiab/MT, 07/10/2010
Armando Roque Ferreira PintoAnalista de sistemas
Agenda
Introduo
Conceito
Instalao
Interpretador
IDEs (Integrated Development Enviroment - Ambiente de desenolvimento integrado)
PEPs (Python Enhanced Proposals)
Mdulos
Baterias
Cuidados pra no enroscar...
Tipos nativos
Operadores
Sintaxe
Estrutura de controle (fluxo e lao)
Prtica...
Introduo
HistriaIncio na Universidade de Amsterdam;
CWI - Instituto de matemtica e cincia da computao;
Produo independente, sem patrocinio;
Iniciou atravs da motivao do Amoeba e ABC;
CriadorGuido van Rossum (GvR)
Mestre em matemtica e cincia da computao;
Ditador Benevolente Vitalcio
Atualmente no Google desde 2005
O nome provm de Monty Pythons Flying Circus;
Introduo
PropsitoAs linguagens da poca no motivou GvR a modificar para atender as necessidades;
Criar uma linguagem fcil e intuitiva mantendo o poder perante as existentes;
Adequada as tarefas dirias com ciclo de desenvolvimento curto;
Quem manda?PSF - No o Programa Sade da Famlia do Governo Federal Brasileiro!!!
Python Software Foundation
Introduo
MissoThe mission of the Python Software Foundation is to promote, protect, and advance the Python programming language, and to support and facilitate the growth of a diverse and international community of Python programmers.
A misso da PSF promover, proteger e avanar a linguagem de programao Python, suportar, facilitar o crescimento de uma comunidade internacional diversificada de programadores Python. (Traduo livre)
Conceito
Alto Nvel, simplicidade, objetividade e clarezaZenPython, por Tim Peters
# import this
Interpretada ou compilada?Interpretada na console
Ferramentas auxiliares para compilar - no nativoWindows
PyCompile
py2exe
Vantagem: velocidade;
Desvantagem: embute todo o Python no binrio;
E o .pyc?O interpretador aps fazer as verificaes compila com CPython gerando o arquivo .pyc para otimizar o carregamento e melhorar o desempenho;
Este arquivo contm byte codes gerados a partir do arquivo .py;
Instalao
WindowsExecutar o binrio (http://www.python.org/download/)
LinuxA excesso em Linux no ter Python instalado
Instalando no:
Opensusezypper install python
Ubuntuapt-get install python
outros saboresMacOS
PortteisCelulares, handhelds
Console e IDE's
InterpretadorLinuxConsole# python
Executando um .py
# python helloworld.py
IDEs e editoresNetbeans
Eclipse
Eric4
Komodo-Edit
Vim, Joe, Pico
Notepad (bloco de notas)
PEP's
Python Enhancement Proposals (http://www.python.org/dev/peps/)
PEP 8 - Guia de estiloIndentao com 4 espaos por nvel;
Tabs ou espaos? Nunca misturar;
Priorizar espaos;
O Tab fica em segundo plano;
Tamanho mximo de todas as linhas de 79 caracteres;
Quebrar as linhas com mais de 80 caracteres com caracter "\";
Linhas em branco
Separar funes e classes com duas linhas em branco;
Definies de mtodos em uma classe separado por uma linha em branco;
Mdulos (baterias)
Banco de dados: ODBC, MySQL, PostgreSQL, Oracle, MSSQLServer, sqlite entre outros;
Rede: HTML, FTP, URL, POP, SMTP, Sockets, CORBA, telnet;
Cincia: SciPy, BioPython, NumPy, MatPlotLib
Processamento de imagens: PIL (Python Image Library), Pythonmagick, Gimp-python;
XML: PyXML, 4Suite, ElementTree;
Computao Grfica: PyOpenGL, PyGame, PyMedia;
Cuidados pra no enroscar...
Sistema operacional
Verso do Interpretador
* Disponibilidade do mdulo *
Palavras chaves (keywords)and del from not while
as elif global or with
assert else if pass yield
break except import print
class exec in raise
continue finally is return
def for lambda try
Tipos nativos
Tipos nativosint, float, long, boolean, strings, listas, dicionrios e tuplas
Variveis so case sensitive, diferenciam maisculas de minsculas;>>> a = 0
>>> type(a)
>>> b = 0.0
>>> c = 'Python'
>>> d = [1,2,3]
>>> type(d)
Tipos nativos
>>> e = ['Linux 2.4', 'Linux 2.6', 'Windows XP', 'Windows 7']
>>> f = {'fruta' : 'maa', 'verdura' : 'couve', 'folha' : 'alface'}
>>> type(f)
>>> print f
{'fruta': 'ma\xe7a', 'verdura': 'couve', 'folha': 'alface'}
>>> print f['fruta']
maa
>>> verd = True
>>> type(verd)
Tipos nativos
Tupla no aceita modificao>>> tupla = (1,2,3)
>>> type(tupla)
>>> tupla[0] = 3
Traceback (most recent call last):
File "", line 1, in
tupla[0] = 3
TypeError: 'tuple' object does not support item assignment
Mas aceita concatenaotupla2 = (4,5,6)
tupla3 = tupla + tupla2
>>> (1, 2, 3, 4, 5, 6)
Tipos nativos
Tipagem em Python dinmica e forte;
Varivel assume o tipo qdo associada com o valor;
Toda varivel uma referncia;>>> a = "1"
>>> b = 1
>>> a + b
Traceback (most recent call last):
File "", line 1, in
a + b
TypeError: cannot concatenate 'str' and 'int' objects
>>> type(a)
>>> type(b)
Operadores
AritmticosComparaoLgicosAtribuio
+==and=
-!=and+=
*>not-=
/=*=
y:a = 3
else:a = 0
O bloco de instrues definido pela indentao
Interessante: >>> a=b=c=d=2
>>> print a,b,c,d
2 2 2 2
Estrutura de controle (Controle de fluxo)
if verdadeiro:faa isso
elif:outro isso
else:faa aquilo
* No existe switch/case
Prtica
Lembra-se do Zen Python?# import this
Prtica
Encondings (PEP 263)Declarao da codificao
Padro ASCII caso no seja explicito# coding='UTF8'
ou# -*- coding: UTF8 -*-
Obrigatrio o caracter "#" no incio da linha
Prtica
Estrutura de um arquivo .py
#!/bin/python
# coding='UTF8'
"""
String de documentao
"""
Prtica
Helphelp()
modules
>>> import md5 (deprecated)
>>> import hashlib
>>> hashlib.sha512("Python").hexdigest()
'fd9d4d5b7a8a8fae6b1bc099b799110f7e4338606e2610f5d9506a4346e..'
ou
>>> var = hashlib.new('sha1')
>>> var.update('Python')
>>> var.hexdigest()
'6e3604888c4b4ec08e2837913d012fe2834ffa83'
Excesses (Exceptions)
>>> vetor4Posicoes = [1,2,3,4]
>>> print vetor4Posicoes[5]
Traceback (most recent call last):
File "", line 1, in
print vetor4Posicoes[5]
IndexError: list index out of range
Tratamento
>>> try:print vetor4Posicoes[5]
except:print "Posicao do vetor nao encontrado"
Posicao do vetor nao encontrado
Funes (Functions)
Blocos de cdigo com nome, que recebem parmetros e retornam um valor;
Sintaxe:
def funcao(arg1, arg2, argN):# Procedimentos
return valor
Chamada:
variavel = funcao(1,2,3)
Interagindo com banco de dados (SQLite)
import sqlite3
# DBAPI - Database Application Programming Interface
conn = sqlite3.connect('/temp/bdpython.sqlite')
# Definio da conexo conn
c = conn.cursor()
# Objeto "cursor" atravs da conexo "conn"
c.execute('''create table python (id int, data text, descricao text, valor real)''')
c.execute('''insert into python values (1, '2010-01-10', 'Meu primeiro registro', \ 10000)''')
conn.commit()
c.execute('''select * from python''')
for row in c:
print row
(1, u'2010-01-10', u'Meu primeiro registro', 10000.0)
c.close()
Log
#!/usr/bin/python
import logging
import logging.handlers
def configure_logger(log_file):"""Accepts a fully-qualified filename to the log file.
Logs at DEBUG to file and at WARNING to stdout.
Returns a fully-configured logger object.
"""
logger = logging.getLogger('ProgramName')
log_formatter = logging.Formatter(
'%(created)-13s %(asctime)s Pid:%(process)s %(levelname)s %(message)s Thread:%(thread)s Thread Name:%(threadName)s Name:%(name)s File:%(filename)s Module: %(module)s Function Name:%(funcName)s')
Log
file_handler = logging.FileHandler(log_file)
file_handler.setFormatter(log_formatter)
file_handler.setLevel(logging.DEBUG)
file_handler = logging.handlers.RotatingFileHandler(log_file, maxBytes=500, backupCount=5)
logger.setLevel(logging.DEBUG)
logger.addHandler(file_handler)
return logger
if __name__ == "__main__":LOG = configure_logger('logfile.txt')
LOG.debug('This is debug level')
LOG.info('This is info level')
LOG.warning('This is warning level')
LOG.error('This is error level')
LOG.critical('This is critical level')
Frameworks
DesktopPyHed
Dabo
WebZope/Plone
Django
Pylons
Turbogears
Web2Py
Concluso
Python no a soluo para todos os problemas;
(No use um martelo para fixar um parafuso)
Perguntas ou dvidas
?
Obrigado pela sua participao
Contato:[email protected]
http://dropsdef.blogspot.com
Bebendo direto da fonte...
Bebendo direto na fonte:
http://www.python.org
http://www.python.org/psf/
http://www.python.org/~guido/
http://www.python.org/about/
http://www.python.org/about/success/
http://www.python.org/about/gettingstarted/
http://www.python.org.br/wiki/DocumentacaoPython#Artigos_e_Tutoriais
http://www.python.org.br/wiki/SoftwarePython#Scripts
http://www.python.org.br/wiki/CookBook
http://www.python.org.br/wiki/IdesPython
http://pt.wikipedia.org/wiki/Guido_van_Rossum
Recomendaes
http://www.python.org.br/wiki/DocumentacaoPython?action=AttachFile&do=view&target=Aprenda_a_Programar-Luciano_Ramalho.pdf
http://www.python.org.br/wiki/DocumentacaoPython?action=AttachFile&do=view&target=aula-01.pdf
http://www.python.org.br/wiki/DocumentacaoPython?action=AttachFile&do=view&target=mergulhando.pdf (parcial)
Outras fontes...
http://www.python.org.br/wiki/DocumentacaoPython#Artigos_e_TutoriaisArtigos e tutoriais da Python.org.BR
http://www.async.com.br/projects/python/pnp.pdfCurso de introduo ao Python
http://docs.python.org/library/sqlite3.htmlInterao Python SQLite3
http://effbot.org/zone/python-compile.htmCompilao CPython .PYC
http://ark4n.wordpress.com/2009/05/25/pyctoria-5-o-zen-do-python/Completo
http://www.slideshare.net/franciscosouza/minicurso-de-pythonDesde introduo at OO, estrutura de dados;
http://www.paradigma.com.br/Plone/cursoPython.pdf
http://www.slideshare.net/asergionogueira/a-linguagem-pythontimo conceito sobre estrutura de dados;
http://www.slideshare.net/flavioribeiro/introduo-a-linguagem-de-programao-python-presentationDiferena entre verso 2.x e 3.0
www.visual.pro.br/py/pdf/gama.pdfBaterias
http://www.slideshare.net/aldaba/python-mini-curso-v0812-presentationBaterias
/