Palestra python

452 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
452
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
16
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Palestra python

  1. 1. APRESENTANDOJoão S. O. Bueno CalligarisPÍON Informática
  2. 2. Visão Geral e Aspectos HistóricosCriada em 1990Criador: Guido van Rossum – atual BDFLdo Stichting Mathematisch Centrum (CWI ) na Holanda,Alternativa à linguagem "ABC" que é uma alternativa ao "BASIC".
  3. 3. Visão Geral e Aspectos HistóricosO nome vem do programa de humor "Monty PythonFlying Circus", programa de TV do grupo de humoristasinglês.Tornou-se comum o uso de cobras como mascotes,embora na origem a linguagem nada tivesse a ver com"python" como cobra.
  4. 4. Alguns Aspectos Técnicos Multiplataforma Interpretada Geração Transparente de BYTECODE Extensível De Propósito Geral
  5. 5. Filosofia SEMPRE FOI SOFTWARE LIVRE
  6. 6. Filosofia Liberdade para usar Liberdade para redistribuir Liberdade para modificar Liberdade para distribuir as modificações
  7. 7. Exemplo de Programa#!/usr/bin/python# -*- coding: iso-8859-1 -*-from math import sqrtdef eh_primo (numero): """eh_primo (numero) -> boolean Verifica se um número é primo ou não. """ for i in xrange (2, int (sqrt(numero) + 1)): if not numero % i: return False return Truea = int (raw_input ("Digite um número:"))if eh_primo (a): print "%d é primo." %aelse: print "%d não é primo" %a
  8. 8. Introdução à Sintaxe- Tabulação para definir blocos- Tipos de dados - inteiros, inteiros longos, ponto flutuante e complexos - 4, 232 , 239, 040, 0x20 - 10 **100 - 3.141592 - 0 + 1j - Booleanos: - False, True -Strings, - João - "Tiago" - """Este estudo tem por objetivo comprovar as relações de vôo, em total de milhaspercorridas, entre as andorinhas Africana e Européia. A partir, pode-se inferir por meiosestatísticos a viabilidade ou não do transporte de cocos inteiros por tais aves. """
  9. 9. Introdução à Sintaxe- listas e tuplas - [0, 1, 2] - ["Maçã", "Melão", "Banana", "Laranja","Morango"] - [23, "Maçã", 5 + 42j, elefante] - (0, 23, 72)- Acesso a fatias de strings, listas e tuplas: - a = "Camelot é um lugar idiota" - a [0:7] -> "Camelot" - a [7:] -> "é um lugar idiota" - a [-3:] -> "ota" - b = ["Rei", "Graal", "Cavaleiro Negro", "Cena 24"] - b[0] -> "Rei" - b[1:2] -> ["Graal", "Cavaleiro Negro"] - b[1][1] -> G
  10. 10. Introdução à Sintaxe- dicionários. - frutas = {"Laranja": 34, "Abacaxi": "Está em falta","Kiwi": 56} - frutas ["Morango"] = 357 - Os módulos de acesso a bancos de dados permitemque os campos sejam lidos como um dicionário
  11. 11. Introdução à Sintaxe- Operadores numéricos: - +, -, /, *, **, %, >>, <<, |, & - 5 + 4 * 5**2 -> 105 - Operadores com strings: - "+", "*" - "maçã" + "limão" -> "maçãlimão" - "pessego" * 3 -> pessegopessegopessego - Também funcionam em listas- % funciona como o "printf" do C, em qualquer string: - "Meu nome é %s, e tenho %d anos." % ("Marcelo", 23) - "Sr. %(nome)s, residente à %(endereco)s %(numero)d" %{"nome": "Luiz de Oliveira", "numero" : 42, "endereco": "Ruados bobos"}
  12. 12. Introdução à SintaxeMétodos: - Tudo em python é um objeto. Objetos possuemmétodos, alguns dos quais podem ser chamadosdiretamente.EXEMPLOS: - string.upper: - "Morango".upper() -> MORANGO - list.sort - a = [4 ,3 ,2 ,1] - a .sort(); a -> [1, 2, 3, 4]
  13. 13. Introdução à SintaxeMétodos: -- Todos os métodos, e propriedades de uma classepodem ser visualizados com a função embutida “dir”>>> dir (str)[__add__, __class__, __contains__, __delattr__, __doc__, __eq__,__ge__, __getattribute__, __getitem__, __getnewargs__, __getslice__,__gt__, __hash__, __init__, __le__, __len__, __lt__, __mod__, __mul__,__ne__, __new__, __reduce__, __reduce_ex__, __repr__, __rmod__,__rmul__, __setattr__, __str__, capitalize, center, count, decode,encode, endswith, expandtabs, find, index, isalnum, isalpha,isdigit, islower, isspace, istitle, isupper, join, ljust, lower, lstrip,replace, rfind, rindex, rjust, rstrip, split, splitlines, startswith,strip, swapcase, title, translate, upper, zfill]
  14. 14. Introdução à SintaxeAtribuiçãoa = 5b = “Banana”a += 6b *= 2print a, b11 “bananabanana”a, b, c = 1, 2, 3a->1; b-> 2; c-> 3Os tipos são definidos dinamicamente, e não hánecessidade de se declarar previamente uma variável.
  15. 15. Introdução à SintaxeControle de Fluxo- If, elif, else – exemplo:a = raw_input ("Nome : ")if a == "Marcelo": print "Você não é bem vindo aqui"elif a == "João": print "Sinta-se a vontade"else: print "Aguarde a autenticação".
  16. 16. Introdução à SintaxeControle de Fluxo- for – exemplos:nome = "João"for letra in nome: print letraj = 0for i in range (0, 150): j += i
  17. 17. Introdução à SintaxeControle de Fluxo- while – exemplo:a = Falsewhile not a: #executa tarefas nome = le_nome_do_banco_de_dados() if nome == fim: a = True
  18. 18. Introdução à SintaxeControle de Fluxo- try - except – exemplo:a = raw_input (“digite um número”)try: b = 10.0 / aexcept: print “Você não digitou um número válido paradivisor”else: print “O resultado é %d” % b
  19. 19. Introdução à SintaxeFunções:- Exemplos:def quadrado (a): return a * adef junta_palavras (*palavras): resultado = “” for palavra in palavras: resultado += palavra return resultado
  20. 20. Introdução à SintaxeFunções:- Exemplo:from math import logdef retangulo (x=0, y=0, w=0, h=0, color=(0,0,0)): “””Retorna string para desenhar um retângulo em postscript “”” result = “%d %d moveton” % (x,y) result += “%d 0 rlineton0 %d rlineton” % (w,h) result += “%d 0 rlineton0 %d rlineton” % (-w,-h) result += “stroken” return result
  21. 21. Exemplo de Programa#!/usr/bin/python# -*- coding: iso-8859-1 -*-from math import sqrtdef eh_primo (numero): """eh_primo (numero) -> boolean Verifica se um número é primo ou não. """ for i in xrange (2, int (sqrt(numero) + 1)): if not numero % i: return False return Truea = int (raw_input ("Digite um número:"))if eh_primo (a): print "%d é primo." %aelse: print "%d não é primo" %a
  22. 22. Orientação a Objeto Um objeto é um conjunto de dados com funçõesassociadas Esses dados e funções estão estruturados de acordocom a informação contida na “classe” a que esse objetopertence As funções são chamadas de “métodos” do objeto, e osdados de “propriedades” Em Python, tudo é um objeto
  23. 23. Orientação a ObjetoExemplo:import mathclass Ponto(object): def __init__(self, x=0, y=0): self.x = x self.y = y def distancia (self, ponto_2): return math.sqrt ((ponto_2.x – self.x) ** 2 + (ponto_2.y – self.y) ** 2)p0 = Ponto()p1 = Ponto (3,4)print p1.distancia (p0)
  24. 24. Orientação a ObjetoHerança - Exemploimport mathclass Pessoa(object): def __init__(self, nome=””, email=””): self.nome = nome self.email = emailclass Vendedor (Pessoa): def __init__ (self, nome=””, email=””, numero=0, comissao=0.0): self.numero = numero self.comissao = comissao Pessoa.__init__ (self, nome, email)
  25. 25. Orientação a ObjetoHerança - Exemploimport mathclass cliente (Pessoa): def __init__ (self, nome=””, email=””, tel=””, empresa=””): self.tel=tel self.empresa = empresa Pessoa.__init__ (self, nome, email)
  26. 26. Orientação a ObjetoHerança - Exemploclass My_int (int): def __add__ (self, fator): return self - fatorb = My_int (10)print b10print b - 37print b + 37
  27. 27. Orientação a ObjetoHerança Múltipla - Exemploclass Cliente (Empresa, Pessoa): passSe houverem métodos com o mesmo nome nas classes Empresa ePessoa, os da classe Empresa serão usados por que ela estáantes na lista de “ancestrais”.
  28. 28. MódulosPode-se definir várias classes correlatas num arquivo .pyqualquer, e usa-las após importar esse arquivo, que entãose torna um “módulo”.import entidadesp = entidades.Cliente ()p2 = entidades.Empresa ()Desta forma, nomes definidos dentro domódulo “entidades” não se confundemcom variáveis locais.
  29. 29. MódulosOpcionalmente, em programas mais simples, ou quandovai se usar somente um sub-módulo, os conteúdos de ummódulo podem ser jogados no escopo local:from math import *from sys import argvimport pygame.display as disp
  30. 30. Módulos PadrãoA instalação do Python é acompanhada de dezenas demódulos com todo tipo de funcionalidade.De funções matemáticas, protocolos de internet, e atébanco de dados simples, além de muitos facilitadores.
  31. 31. Módulos PadrãoO módulo “os” contém funções para manipular osistema de arquivos, e algumas constantes paraassegurar a operação entre plataformas diferentesExemplos:os.unlinkos.chdiros.path.sep
  32. 32. Módulos PadrãoO módulo “sys” contém recursos do ambiente emque o programa é executadoExemplos:sys.pathsys.argvsys.stdin
  33. 33. Módulos PadrãoO módulo “math” como já visto, contém funçõesmatemáticas que vão além das 4 operações básicas, taiscom funções trigonométricas, logarítmicas, etc...Para matemática mais elaborada, como cálculonumérico com matrizes, ou cálculo simbólico, deve seusar módulos de terceiros, também disponíveis,como SCIPY ou NUMERIC
  34. 34. Módulos Padrão – todos__builtin__ __future__ __main__ _winreg (Windows) aepack (Mac) aetools (Mac) aetypes (Mac) aifc AL (IRIX) al (IRIX) anydbm applesingle (Mac) array asynchat asyncore atexit audioop autoGIL (Mac) base64 BaseHTTPServer Bastion binascii binhex bisect bsddb (Unix, Windows) buildtools (Mac) bz2 calendar Carbon.AE (Mac) Carbon.AH (Mac) Carbon.App (Mac) Carbon.CaronEvt (Mac) Carbon.CF (Mac) Carbon.CG (Mac) Carbon.Cm (Mac) Carbon.Ctl (Mac) Carbon.Dlg (Mac) Carbon.Evt (Mac) Carbon.Fm (Mac) Carbon.Folder (Mac) Carbon.Help (Mac) Carbon.List (Mac) Carbon.Menu (Mac) Carbon.Mlte (Mac) Carbon.Qd (Mac) Carbon.Qdoffs (Mac) Carbon.Qt (Mac) Carbon.Res(Mac) Carbon.Scrap (Mac) Carbon.Snd (Mac) Carbon.TE (Mac) Carbon.Win (Mac) cd (IRIX) cfmfile (Mac) cgi CGIHTTPServer cgitb chunk cmath cmd code codecs codeop collections ColorPicker (Mac) colorsys commands (Unix) compileall compiler compiler.ast compiler.visitor ConfigParser Cookie cookielib copy copy_reg cPickle crypt (Unix) cStringIO csv curses curses.ascii curses.panel curses.textpad curses.wrapper datetime dbhash (Unix, Windows) dbm (Unix) decimal DEVICE (IRIX) difflib dircache dis distutils distutils.archive_util distutils.bcppcompiler distutils.ccompiler distutils.cmd distutils.command distutils.command.bdist distutils.command.bdist_dumb distutils.command.bdist_packager distutils.command.bdist_rpm distutils.command.bdist_wininst distutils.command.build distutils.command.build_clib distutils.command.build_ext distutils.command.build_py distutils.command.build_scripts distutils.command.clean distutils.command.config distutils.command.install distutils.command.install_data distutils.command.install_headers distutils.command.install_lib distutils.command.install_scripts distutils.command.register distutils.command.sdist distutils.core distutils.cygwinccompiler distutils.debug distutils.dep_util distutils.dir_util distutils.dist distutils.emxccompiler distutils.errors distutils.extension distutils.fancy_getopt distutils.file_util distutils.filelist distutils.log distutils.msvccompiler distutils.mwerkscompiler distutils.spawn distutils.sysconfig distutils.text_file distutils.unixccompiler distutils.util distutils.version dl (Unix) doctest
  35. 35. DocumentaçãoO modo interativo dispõe da função HELP que exibe as strings dedocumentação (Docstring) de um módulo, classe ou função.Exemplo:help (os.listdir)Help on built-in function listdir:listdir(...) listdir(path) -> list_of_strings Return a list containing the names of the entries in the directory. path: path of directory to list The list is in arbitrary order. It does not include the special entries . and .. even if they are present in the directory.
  36. 36. DocumentaçãoCom o python é fornecido um programa separado – o Pydoc – que pode listar todos os módulos instalados no sistema, e o conteúdo e stringsde ajuda de cada módulo.Um dos modos de operação do pydoc é a criação de um servidor httpnuma porta específicada. Então a documentação pode ser vistaatravés da URL http://localhost:portapydoc -p 2080firefox http://localhost:2080
  37. 37. Outros MódulosMódulos que trabalham com bibliotecas desenvolvidas por terceiros,por mais universal que seja sua presença, não fazem parte dainstalação padrão do Python.Em sua maioria, estão listados em http://www.python.org/pypi, eincluem módulos para acesso a bases de dados livres e proprietárias,computação científica, multimídia e outros.Há mais de 400 módulos listados aí.
  38. 38. Interface GráficaO módulo que fornece uma interface gráfica que acompanha o pythoné o Tkinter.Ele é fácil de usar, mas a sintaxe de suas funções é por vezes pouco“pythonica”, por herdar muita coisa do TCL. Por ser mais antigo, aaparência de janelas criadas com o Tkinter pode parecer pobre.É software livre, leve, funciona bem em ambiente Windows e X11
  39. 39. Interface GráficaExemplo de Tkinter:from Tkinter import *root = Tk()w = Label(root, text="Hello, world!")w.pack()root.mainloop()
  40. 40. Interface GráficaPyGTK é o módulo que dá acesso à GTK “the GIMP Tool Kit”.Ë muito mais completa que o Tkinter, funciona bem emwindows e X11, mas não acompanha o Python, devendo serinstalada separadamente.Sua programação é um pouco mais complexa.Como é o toolkit padrão do ambiente Gnome, aplicativosdesenvolvidos em PyGTK se integram totalmente com esse ambiente.
  41. 41. Interface GráficaExemplo de PyGTKfrom gtk import *window = GtkWindow(WINDOW_TOPLEVEL)window.set_border_width(10)button = GtkButton("Hello, World!")window.add(button)button.show()window.show()mainloop()
  42. 42. Interface GráficaPyQT é o módulo, de terceiros, que faz a ligação com abiblioteca QT- padrão do KDE. É muito completa, e maisfácil de programar que as anteriores. Conta no entanto,com a desvantagem de não ser software livre para Windows,até a versão atual. (Os desenvolvedores já anunciaram quea próxima versão – QT 4 – será disponibilizada sob a GPLpara Windows também).Atualmente, a PyQT é mantida pelo projeto KDE.
  43. 43. Interface GráficaExemplo de PyQTimport sysfrom qt import *a = QApplication(sys.argv)hello = QPushButton("Hello world!",None)hello.resize(100,30)a.setMainWidget(hello)hello.show()a.exec_loop()
  44. 44. MultimídiaO módulo “pygame” provê a funcionalidade doSDL para o python.Uma biblioteca multiplataforma, para acessodireto ao vídeo e ao som, torna simples odesenvolvimento de aplicativos gráficos, deáudio e mesmo para reproduzir vídeo.
  45. 45. MultimídiaExemplo de Pygamefrom pygame import *from time import sleepdisplay.init()surf = display.set_mode ((800,600))display.toggle_fullscreen()pygame.draw.rect (surf, 0x0000ff, (100,100, 300, 200))display.flip()sleep (5)display.toggle_fullscreen()display.quit()
  46. 46. Aspectos TécnicosPython compila dinamicamente os programas parabytecode. Se um programa é importado comomódulo, o seu bytecode pré compilado é salvo deforma transparente na forma de um arquivo “.pyc”Em geral, recomenda-se que se trabalhe comversões de código aberto dos programas – mesmoque sejam distribuidos só o bytecode de umsoftware, não é difícil “descompilar” o programaPython.
  47. 47. Aspectos TécnicosIntegrando com outras linguagens: CAlguns dos módulos de python são apenas uma fina“camada” de código para que o python possa enxergaruma biblioteca escrita em “C”.Dessa forma, optem-se quase a mesma performance queuma aplicação em C teria, mesmo para tarefas que usemmuitos recursos, como edição de vídeo, escrevendo-seuma fração do código que seria necessário para a mesmafuncionalidade em C.
  48. 48. Aspectos TécnicosIntegrando com outras linguagens: CAlternativamente, o software “pyrex” permite que seescreva código que se assemelha a uma extensão doPython, onde se pode explicitar que variáveis/funçõesserão nativas do python, e quais serão nativas em C.Dessa forma, escrevendo-se praticamente só em python,pode se ganhar performance em áreas de processamentomais intenso, fazendo-se uso de estruturas nativas do C.
  49. 49. Aspectos TécnicosIntegrando com outras linguagens: JAVAO próprio site oficial do Python provê um interpretadoralternativo – o Jython, que compila os scripts Python parabytecode JAVA. Um aplicativo que use o Jython podeimportar qualquer classe do Java, e usar sua extensa API,sem penalidades, com a vantagem do menor tempo dedesenvolvimento inerente ao Python.
  50. 50. Embutindo PythonPython foi desenhado de forma que seja fácil adicionar aprogramas em C a capacidade de executarem “plug-ins”escritos em python.Dada a facilidade para escrever e manter código, issopropicia muita flexibilidade para esses programas.As informações necessárias para se embutir uminterpretador python em outro programa constam dopróprio site do python.Alguns programas que possuem extensão em python:GIMP, Blender e Gnumeric
  51. 51. Embutindo PythonExemplo de Script para o GIMP:from gimpfu import *def center_layer (img, drw): x = (img.width - drw.width) / 2 y = (img.height - drw.height) / 2 pdb.gimp_layer_set_offsets (drw, x, y) pdb.gimp_displays_flush ()register( "center_layer", "Centers Current Layer on Canvas", "enters Current Layer on Canvas", "Joao S. O. Bueno", "(k) All rites reversed - JS", "2004", "<Image>/Python-Fu/center-layer", "*", [], [], center_layer).
  52. 52. jsbueno@mpc.com.br

×