Post on 18-Dec-2014
description
Luiz Guilherme F. Aldabalde
Iniciando o uso do Python
Versão.: 10/12/08
Iniciando o uso do Python
Conteúdo
● Introdução● Tipos Básicos● Funções Builtins● Instrospecção● Criando Funções● PyDoc● Tratamento de Erros● Baterias● Fontes
Introdução
Objetivos
● Apresentar sua origem e o seu propósito● Conhecer a sintaxe da linguagem● Elaborar os primeiros códigos● Apresentar os módulos mais importantes● Indicar outras fontes de conhecimento
Introdução
Introdução
HistóricoPython foi criada em 1990 por Guido Van Rossum. O nome da linguagem é uma homenagem ao grupo inglês de humor Monty Python. Segundo Guido a linguagem foi concebida para ocupar o espaço que existia entre as linguagens C/C++ e o shell.
Introdução
Evolução da espécie :● 1990 Nascimento● 1994 Python ?? Que isso ?● 1997 – Mas ninguém usa isso.● 1999 – Onde podemos encontrar programadores?● 2004 – Infoworld – 6a linguagem ● 2005 Python na Nokia● 2007 – A linguagem que mais cresceu (TIOBE)● 2008 – Google App Engine
Introdução
Encontramos o Python :
● Blender, Maya● OpenOffice ● Zope/Plone ● BitTorrent ● MoinMoin ● Mailman ● Chandler ● Gimp ● Gnumeric ● Anaconda, Portage, Yum● Trac
Introdução
Quem usa ?? ● Nasa, United Space Alliance ● Google, Yahoo , YouTube● Nokia, Nortel ● RedHat, Gentoo ● Apple ● Disney ● Philips ● Los Alamos National Laboratory ● ILM Industrial Ligth & Magic● SERPRO, PETROBRAS ● Interlegis
Introdução
Por que usar Python ?
● Fácil Aprendizado ● Fácil Manutenção● Possui uma extensa Biblioteca Padrão● Possui uma poderosa Estruturas de Dados Nativas● Disponível com código aberto e livre● Interface para outras Linguagens ( Lua, Java, C) ● Multiplataforma● É um canivetesuíço !!!
Introdução
Presente nos Sistemas Operacionais:● Windows: 9x, Me, 2K, XP● Unix: HPUX, Solaris (freqüentemente préinstalada)● Linux (freqüentemente préinstalada)● MacOs X (sempre préinstalada)● Nokia Série 60
Através de Interpretadores :● CPython ● Jython (máquina virtual Java)● IronPython .NET (em desenvolvimento na Microsoft)
Características Básicas
● Interpretado● Possui modo Interativo● Possui Tipagem Dinâmica forte● Linguagem de Muito Alto nível Very HighLevel Language (VHLL)● “Glue Language” usada para integrar sistemas distintos● Possui uma grande quantidade de bibliotecas de objetos ● Sua sintaxe facilita uma apresentação limpa do código ● Orientada a Objetos, mas permite trabalhar com outros paradigmas
Primeiras definições :
Características Básicas
Múltiplos paradigmas :
PYTHONPYTHON
SCRIPTSSCRIPTS
ESTRUTURADAESTRUTURADA
FUNCIONALFUNCIONAL
OOOO
Características Básicas
python {opções} [c comando | m módulo | arquivo] {parâmetros}
c cmd : programa passado como string (cmd) na linha de comandoh : mensagem de ajudai : executa programa e "cai" no prompt interativoO : ativa otimizaçõesOO : mesmo que O, incluindo remoção de docstrings (documentação online)t : avisa sobre inconsistências na tabulaçãov : importação verborrágicaV : imprime número de versão
O Interpretador:
Características Básicas
and assert break class continue yielddef finally in print
delforis raiseeliffromlambdareturnelse global
nottryexceptiforwhileexecimportpass
Palavras reservadas [29] :
Características Básicas
● Cada linha termina com ponto e vírgula (;) ou com um <enter >● Cada bloco de instruções é definido pela identação ● Comentário em uma linha é definido pelo símbolo tralha (#)● Comentário em mais e uma linha podemos usar aspas triplas para começar e terminar (“”” texto comentado “””)● Multi linha com o uso de barra invertida (\)● Uma variável não é declarada, ela assume o tipo quando associada com um valor
Começando ...
A Linguagem
● Numérico : Decimal, Hexa (0x1a), long 1.0l, float – 1.0 ou 1.0e3, complexo 1.0j● Strings : “oi”, 'oi', ”””oi 'dentro' de outra”””● Tuplas : (1, “a”, 3.0)● Listas : [1,2,3,4]● Dicionários : {“Nome”: “Ronaldo”, “Time”:”Barcelona”}● Booleano : True ou False● Tipo Nulo : None
Tipos de dados básicos :
a = 1 # Decimal Inteirob = 0x12 # Hexadecimal Inteiroc = 1.0 # Floatd = 1.34e3 # Floate = "Laranja"f = "Laranja e 'orange'"h = 'Laranja'lista_frutas = ["laranja", "banana", "pera"]tupla_frutas = ("laranja", "banana", "pera") dic_hortifruti = {"fruta":"laranja", "verdura": "alface"}
Exemplo de Tipos de dados básicos :
A Linguagem
● Condicional :planetas = ["Marte", "Terra", "Venus", "Plutao", "Saturno", "Jupiter"]
if type(planetas) is list: print "Tenho uma Lista"
● Loop :for i in xrange(10): print i
Controle de Fluxo:
A Linguagem
● Enquanto :planetas = ["Marte", "Terra", "Venus", "Plutao", "Saturno", "Jupiter"]conta = 0while planetas[conta] <> "Saturno": print planetas[conta] conta = conta + 1
Controle de Fluxo:
A Linguagem
● Tratando com texto a = “Hoje vai fazer sol “ pos = a.find(“vai) novo_a = a[1:1] outro_a = a[1:1] a_maiusculo = a.upper() d = dict(zip([“um”, “dois”, “tres”], [1,2,3]))
Agora um pouco de diversão :
A Linguagem
● Alguns truques : x,y = y,x # Exemplo de swap list comprehension : resultado = [x for x in xrange(50) if x%3 ==0]
A diversão continua ...
A Linguagem
Uma função pode retornar um ou mais objetos.Quanto aos parâmetros de entrada, podemos ter 5 tipos de funções :
● Caso 1 Função simples : def func_simples(): print “oi” return True func_simples()
Usando Funções :
A Linguagem
● Caso 2 Função com parâmetros definidos: def func_soma(a, b): c = a + b return c total = func_soma(1,3)
Usando Funções (continuação) :
A Linguagem
● Caso 3 Função com parâmetros definidos, mas valores defaults: def func_soma(a, b=2): c = a + b return c total = func_soma(1,3) total = func_soma(2)
Usando Funções (continuação) :
A Linguagem
● Caso 4 Função com quantidade de parâmetros variáveis: def func_soma(*entrada): # entrada é uma tupla com todas as variáveis passadas c = 0 for i in entrada: c = c + i return c total = func_soma(1,3) total = func_soma(2,3,4,5)
Usando Funções (continuação) :
A Linguagem
Caso 5 Função com quantidade de parâmetros variáveis, mas nome de variáveis associadas: def func_trata(**entrada): # entrada é um dicionário formado pelo par chave=valor print entrada return True total = func_trata(nome=”Ronaldo”, time=”Real Madri”)
Usando Funções (continuação) :
A Linguagem
Podemos usar uma função como uma variável dentro de um dicionário. Desta forma podemos escolher entre várias opções de maneira muito simples :
def func_um(): print “um” def func_dois(): print “dois” lista_funcoes = {“um”: func_um, “dois”: func_dois} lista_funcoes[“um”]()
Outra formas de chamar uma função :
A Linguagem
def fun_um(): “”” Descrição da função fun_um() “”” return
● No modo interativo : help(fun_um)● Com um browser : Pydoc p 123
Documentando o seu código :
A Linguagem
Para permitir a chamada de outras funções, classes temos os seguintes comandos :
import nome_módulo from nome_módulo import * from nome_módulo import nome_func from nome_módulo import nome_func as alias_func
Usando Módulos :
A Linguagem
Para permitir que um módulo importado não execute as rotinas que estejam fora de uma função utilizamos o seguinte recursos : if __name__ == '__main__': print “oi” Para definir um diretório como um conjunto de arquivos que serão importados basta colocar um arquivo (vazio) com este nome : __init__.py
Algo mais sobre Módulos :
A Linguagem
● No modo interativo usamos o dir() para realizar esta função import os dir(os)
● Permite a integração com IDEs para a geração de ajuda● Usado para conhecer os módulos e métodos de um objeto que estão disponíveis.
Introspecção pesquisando os módulos:
A Linguagem
● type() apresenta o tipo de uma variável.● locals() apresenta as variáveis presentes no escopo local.● globals() apresenta as variáveis presentes no escopo global.
Definição : Capacidade da linguagem de identificar suas próprias estruturas internas, tais como tipos, escopo das variáveis, métodos e atributos.
Introspecção, de modo mais geral :
A Linguagem
Conhecendo o __builtins__:
O módulo __builtins__ contém as funções disponíveis por padrão quando se inicia o uso do Python. Temos :
● help● tuple, int, list, dict, float, long● chr, ord● len, sum, min, max, pow● xrange● open● Códigos de Erro● reduce, map, filter● raw_input● ... [ use o dir(__builtins__) para pesquisar mais módulos.]
A Linguagem
Tratamento de Exceções
try: <comandos>except expressão ,variável: <comandos se houve exceções>else: <comandos se não houve exceções>
Controlando o erro através do try/except:
Debug - Encontrando os erros
Debug :Usando o pdb para inserir um “breakpoint” no seu código: import pdb; pdb.set_trace()Uma vez no modo interativo você pode verificar todas as variáveis, e usar os seguintes comandos : n – next, vai para a próxima linha s step into, entra em uma subfunção ( se existir) b xx – define um novo breakpoint na linha xx c – continue l list h – chama o help
Usando um “debugger” :
class segunda(primeira): def __init__(self): print “oi” def hello_2(self): print “Hello second world”
Uma classe ... :
Usando Orientação a Objetos
Baterias Incluídas
Vários módulos estão disponíveis, entre eles temos :
● SO: os, sys, shutils● Dados: csv, pickle, shelve, zipfile● Rede: email, ftplib, urllib2, urlparse, SimpleHttpServer● Ferramentas Gerais : datetime, numeric, time, re,md5
Bibliotecas que fazem a diferença :
Baterias Incluídas
Bancos de Dados : ODBC, MySQL, Postgres, Oracle, SQLServer, sqlite, gadfly, ZODB/Durus
Rede : Twisted, asyncore, htmllib, SimpleHTTPServer, urllib, ftplib, poplib, smtplib, telnetlib
GUI : Tkinter, wxPython, PyGTk, PyQt, PyKDE, Pythonwin
Ciência : NumPY, SciPy, BioPython, MatPlotLIb
XML : PyXML, 4Suite, ElementTree, RDFLib, Cwm
Web : ZOPE, CherryPy, Webware, Quixote, PSP, mod_python, Nevow, Django, TurboGears, Pylons
Processamento. de Imagens : PIL, PythonMagick, Gimp-python
Mais Energia para as Baterias
Referências
Python in a Nutshell – Alex Martelli – O'Reilly Python Cookbook – Alex Martelli e David Ascher O'Reilly Dive Into Python – Mark Pilgrim (http://www.diveintopython.org/ ) Aprendendo Python Mark Lutz e David Ascher
Livros :
Site oficial : www.python.org- Site oficial no Brasil : www.pythonbrasil.com.br- Manual Referência : http://docs.python.org/ref/ref.html- Tutorial ( Português) : http://www.python.org/doc/current/tut/tut.html
Alguns endereços :
Referências
Wiki SLRJ : wiki.softwarelivre.org/SLRJ/WebHome- Lista SL-RJ : groups.google.com/group/slrj- Lista PythonRio : br.groups.yahoo.com/group/pythonrio/- Site SERPRO : www.serpro.gov.br
Mais alguns endereços :
Referências
FIM, alguma pergunta ??
OBRIGADO
Luiz Guilherme F. AldabaldeLuiz Guilherme F. Aldabaldelg.aldabalde@gmail.comlg.aldabalde@gmail.com