Mini Curso Python

download Mini Curso Python

If you can't read please download the document

Transcript of Mini Curso Python

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

/