SlideShare a Scribd company logo
1 of 55
Download to read offline
APRESENTANDO




João S. O. Bueno Calligaris
PÍON Informática
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".
Visão Geral e Aspectos Históricos

O nome vem do programa de humor "Monty Python
Flying Circus", programa de TV do grupo de humoristas
inglês.
Tornou-se comum o uso de cobras como mascotes,
embora na origem a linguagem nada tivesse a ver com
"python" como cobra.
Alguns Aspectos Técnicos

 Multiplataforma
 Interpretada
 Geração Transparente de BYTECODE
 Extensível
 De Propósito Geral
Filosofia

 SEMPRE FOI   SOFTWARE LIVRE
Filosofia

 Liberdade para usar
 Liberdade para redistribuir
 Liberdade para modificar
 Liberdade para distribuir as modificações
Exemplo de Programa
#!/usr/bin/python
# -*- coding: iso-8859-1 -*-
from math import sqrt

def 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 True

a = int (raw_input ("Digite um número:"))

if eh_primo (a):
       print "%d é primo." %a
else:
      print "%d não é primo" %a
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 milhas
percorridas, entre as andorinhas Africana e Européia. A partir, pode-se inferir por meios
estatísticos a viabilidade ou não do transporte de cocos inteiros por tais aves. """
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'
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 permitem
que os campos sejam lidos como um dicionário
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": "Rua
dos bobos"}
Introdução à Sintaxe
Métodos:
   - Tudo em python é um objeto. Objetos possuem
métodos, alguns dos quais podem ser chamados
diretamente.

EXEMPLOS:
  - string.upper:
      - "Morango".upper() -> 'MORANGO'

  - list.sort
      - a = [4 ,3 ,2 ,1]
      - a .sort(); a -> [1, 2, 3, 4]
Introdução à Sintaxe
Métodos:
  -- Todos os métodos, e propriedades de uma classe
podem 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']
Introdução à Sintaxe
Atribuição
a   = 5
b   = “Banana”
a   += 6
b   *= 2
print a, b
11 “bananabanana”

a, b, c = 1, 2, 3
a->1; b-> 2; c-> 3

Os tipos são definidos dinamicamente, e não há
necessidade de se declarar previamente uma variável.
Introdução à Sintaxe
Controle 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".
Introdução à Sintaxe
Controle de Fluxo

- for – exemplos:
nome = "João"
for letra in nome:
   print letra

j = 0
for i in range (0, 150):
   j += i
Introdução à Sintaxe
Controle de Fluxo

- while – exemplo:
a = False
while not a:
   #executa tarefas
   nome = le_nome_do_banco_de_dados()
   if nome == 'fim':
      a = True
Introdução à Sintaxe
Controle de Fluxo

- try - except – exemplo:
a = raw_input (“digite um número”)
try:
   b = 10.0 / a
except:
   print “Você não digitou um número válido para
divisor”
else:
   print “O resultado é %d” % b
Introdução à Sintaxe
Funções:

- Exemplos:
def quadrado (a):
    return a * a

def junta_palavras (*palavras):
     resultado = “”
     for palavra in palavras:
         resultado += palavra
     return resultado
Introdução à Sintaxe
Funções:

- Exemplo:
from math import log
def 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
Exemplo de Programa
#!/usr/bin/python
# -*- coding: iso-8859-1 -*-
from math import sqrt

def 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 True

a = int (raw_input ("Digite um número:"))

if eh_primo (a):
       print "%d é primo." %a
else:
      print "%d não é primo" %a
Orientação a Objeto
 Um objeto é um conjunto de dados com funções
associadas
 Esses dados e funções estão estruturados de acordo
com a informação contida na “classe” a que esse objeto
pertence
 As funções são chamadas de “métodos” do objeto, e os
dados de “propriedades”
 Em Python, tudo é um objeto
Orientação a Objeto
Exemplo:
import math
class 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)
Orientação a Objeto
Herança - Exemplo
import math
class Pessoa(object):
   def __init__(self, nome=””, email=””):
      self.nome = nome
      self.email = email
class Vendedor (Pessoa):
   def __init__ (self, nome=””, email=””, numero=0,
                 comissao=0.0):
      self.numero = numero
      self.comissao = comissao
      Pessoa.__init__ (self, nome, email)
Orientação a Objeto
Herança - Exemplo
import math
class cliente (Pessoa):
   def __init__ (self, nome=””, email=””, tel=””,
                 empresa=””):
      self.tel=tel
      self.empresa = empresa
      Pessoa.__init__ (self, nome, email)
Orientação a Objeto
Herança - Exemplo

class My_int (int):
   def __add__ (self, fator):
      return self - fator
b = My_int (10)
print b
10
print b - 3
7
print b + 3
7
Orientação a Objeto
Herança Múltipla - Exemplo

class Cliente (Empresa, Pessoa):
      pass




Se houverem métodos com o mesmo nome nas classes Empresa e
Pessoa, os da classe Empresa serão usados por que ela está
antes na lista de “ancestrais”.
Módulos

Pode-se definir várias classes correlatas num arquivo .py
qualquer, e usa-las após importar esse arquivo, que então
se torna um “módulo”.

import entidades

p = entidades.Cliente ()
p2 = entidades.Empresa ()

Desta forma, nomes definidos dentro do
módulo “entidades” não se confundem
com variáveis locais.
Módulos

Opcionalmente, em programas mais simples, ou quando
vai se usar somente um sub-módulo, os conteúdos de um
módulo podem ser jogados no escopo local:

from math import *
from sys import argv

import pygame.display as disp
Módulos Padrão

A instalação do Python é acompanhada de dezenas de
mó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.
Módulos Padrão

O módulo “os” contém funções para manipular o
sistema de arquivos, e algumas constantes para
assegurar a operação entre plataformas diferentes
Exemplos:

os.unlink
os.chdir
os.path.sep
Módulos Padrão

O módulo “sys” contém recursos do ambiente em
que o programa é executado

Exemplos:

sys.path
sys.argv
sys.stdin
Módulos Padrão

O módulo “math” como já visto, contém funções
matemáticas que vão além das 4 operações básicas, tais
com funções trigonométricas, logarítmicas, etc...

Para matemática mais elaborada, como cálculo
numérico com matrizes, ou cálculo simbólico, deve se
usar módulos de terceiros, também disponíveis,
como SCIPY ou NUMERIC
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
Documentação
O modo interativo dispõe da função HELP que exibe as strings de
documentaçã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.
Documentação
Com o python é fornecido um programa separado – o Pydoc – que pode
 listar todos os módulos instalados no sistema, e o conteúdo e strings
de ajuda de cada módulo.

Um dos modos de operação do pydoc é a criação de um servidor http
numa porta específicada. Então a documentação pode ser vista
através da URL http://localhost:porta

pydoc -p 2080
firefox http://localhost:2080
Outros Módulos
Módulos que trabalham com bibliotecas desenvolvidas por terceiros,
por mais universal que seja sua presença, não fazem parte da
instalação padrão do Python.

Em sua maioria, estão listados em http://www.python.org/pypi, e
incluem 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í.
Interface Gráfica
O 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, a
aparência de janelas criadas com o Tkinter pode parecer pobre.

É software livre, leve, funciona bem em ambiente Windows e X11
Interface Gráfica
Exemplo de Tkinter:

from Tkinter import *

root = Tk()

w = Label(root, text="Hello, world!")
w.pack()

root.mainloop()
Interface Gráfica
PyGTK é o módulo que dá acesso à GTK “the GIMP Tool Kit”.
Ë muito mais completa que o Tkinter, funciona bem em
windows e X11, mas não acompanha o Python, devendo ser
instalada separadamente.

Sua programação é um pouco mais complexa.

Como é o toolkit padrão do ambiente Gnome, aplicativos
desenvolvidos em PyGTK se integram totalmente com esse ambiente.
Interface Gráfica
Exemplo de PyGTK

from gtk import *

window = GtkWindow(WINDOW_TOPLEVEL)
window.set_border_width(10)

button = GtkButton("Hello, World!")
window.add(button)
button.show()

window.show()

mainloop()
Interface Gráfica
PyQT é o módulo, de terceiros, que faz a ligação com a
biblioteca 'QT'- padrão do KDE. É muito completa, e mais
fá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 que
a próxima versão – QT 4 – será disponibilizada sob a GPL
para Windows também).

Atualmente, a PyQT é mantida pelo projeto KDE.
Interface Gráfica
Exemplo de PyQT

import sys
from qt import *

a = QApplication(sys.argv)
hello = QPushButton("Hello world!",None)
hello.resize(100,30)
a.setMainWidget(hello)
hello.show()

a.exec_loop()
Multimídia
O módulo “pygame” provê a funcionalidade do
SDL para o python.
Uma biblioteca multiplataforma, para acesso
direto ao vídeo e ao som, torna simples o
desenvolvimento de aplicativos gráficos, de
áudio e mesmo para reproduzir vídeo.
Multimídia
Exemplo de Pygame

from pygame import *
from time import sleep
display.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()
Aspectos Técnicos
Python compila dinamicamente os programas para
bytecode. Se um programa é importado como
módulo, o seu bytecode pré compilado é salvo de
forma transparente na forma de um arquivo “.pyc”

Em geral, recomenda-se que se trabalhe com
versões de código aberto dos programas – mesmo
que sejam distribuidos só o bytecode de um
software, não é difícil “descompilar” o programa
Python.
Aspectos Técnicos
Integrando com outras linguagens:   C
Alguns dos módulos de python são apenas uma fina
“camada” de código para que o python possa enxergar
uma biblioteca escrita em “C”.

Dessa forma, optem-se quase a mesma performance que
uma aplicação em C teria, mesmo para tarefas que usem
muitos recursos, como edição de vídeo, escrevendo-se
uma fração do código que seria necessário para a mesma
funcionalidade em C.
Aspectos Técnicos
Integrando com outras linguagens:   C
Alternativamente, o software “pyrex” permite que se
escreva código que se assemelha a uma extensão do
Python, onde se pode explicitar que variáveis/funções
serã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 processamento
mais intenso, fazendo-se uso de estruturas nativas do C.
Aspectos Técnicos
Integrando com outras linguagens:   JAVA
O próprio site oficial do Python provê um interpretador
alternativo – o Jython, que compila os scripts Python para
bytecode JAVA. Um aplicativo que use o Jython pode
importar qualquer classe do Java, e usar sua extensa API,
sem penalidades, com a vantagem do menor tempo de
desenvolvimento inerente ao Python.
Embutindo Python
Python foi desenhado de forma que seja fácil adicionar a
programas em C a capacidade de executarem “plug-ins”
escritos em python.

Dada a facilidade para escrever e manter código, isso
propicia muita flexibilidade para esses programas.

As informações necessárias para se embutir um
interpretador python em outro programa constam do
próprio site do python.

Alguns programas que possuem extensão em python:
GIMP, Blender e Gnumeric
Embutindo Python
Exemplo 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)
.
jsbueno@mpc.com.br

More Related Content

What's hot

Python: Iteraveis, geradores etc
Python: Iteraveis, geradores etcPython: Iteraveis, geradores etc
Python: Iteraveis, geradores etc
Luciano Ramalho
 
Introdução à linguagem c
Introdução à linguagem cIntrodução à linguagem c
Introdução à linguagem c
Rafael_Lima87
 
Programando em python funcoes
Programando em python   funcoesProgramando em python   funcoes
Programando em python funcoes
samuelthiago
 

What's hot (19)

Iteraveis e geradores
Iteraveis e geradoresIteraveis e geradores
Iteraveis e geradores
 
Iteraveis e geradores em Python
Iteraveis e geradores em PythonIteraveis e geradores em Python
Iteraveis e geradores em Python
 
Python: Iteraveis, geradores etc
Python: Iteraveis, geradores etcPython: Iteraveis, geradores etc
Python: Iteraveis, geradores etc
 
Php
PhpPhp
Php
 
Introdução à linguagem c
Introdução à linguagem cIntrodução à linguagem c
Introdução à linguagem c
 
Linguagem C - Strings
Linguagem C - StringsLinguagem C - Strings
Linguagem C - Strings
 
Python 03
Python 03Python 03
Python 03
 
Python 01
Python 01Python 01
Python 01
 
Programação funcional tipada: uma introdução
Programação funcional tipada: uma introduçãoProgramação funcional tipada: uma introdução
Programação funcional tipada: uma introdução
 
Programando em python funcoes
Programando em python   funcoesProgramando em python   funcoes
Programando em python funcoes
 
Estruturas de dados em Python
Estruturas de dados em PythonEstruturas de dados em Python
Estruturas de dados em Python
 
Perl Moderno, dia3
Perl Moderno, dia3Perl Moderno, dia3
Perl Moderno, dia3
 
PHP Arrays - Básico | Certificação
PHP Arrays - Básico | CertificaçãoPHP Arrays - Básico | Certificação
PHP Arrays - Básico | Certificação
 
Iteráveis e geradores (versão RuPy)
Iteráveis e geradores (versão RuPy)Iteráveis e geradores (versão RuPy)
Iteráveis e geradores (versão RuPy)
 
Python 04
Python 04Python 04
Python 04
 
mod5-estruturas-dadosdinamicas
mod5-estruturas-dadosdinamicasmod5-estruturas-dadosdinamicas
mod5-estruturas-dadosdinamicas
 
Orientação a objetos em Python (compacto)
Orientação a objetos em Python (compacto)Orientação a objetos em Python (compacto)
Orientação a objetos em Python (compacto)
 
Minicurso: Python em 4 horas - FATEC SCS 2015
Minicurso: Python em 4 horas - FATEC SCS 2015 Minicurso: Python em 4 horas - FATEC SCS 2015
Minicurso: Python em 4 horas - FATEC SCS 2015
 
Orientação a Objetos em Python
Orientação a Objetos em PythonOrientação a Objetos em Python
Orientação a Objetos em Python
 

Viewers also liked

Viewers also liked (8)

Tratamiento de costos en financiemiento
Tratamiento de costos en financiemientoTratamiento de costos en financiemiento
Tratamiento de costos en financiemiento
 
Chanda's characteristics
Chanda's characteristicsChanda's characteristics
Chanda's characteristics
 
Politica
PoliticaPolitica
Politica
 
Stop motion P3
Stop motion P3Stop motion P3
Stop motion P3
 
Safo rico safo pobre
Safo rico safo pobreSafo rico safo pobre
Safo rico safo pobre
 
Fibonacci Serie
Fibonacci SerieFibonacci Serie
Fibonacci Serie
 
Angulos tarea
Angulos tareaAngulos tarea
Angulos tarea
 
Change of state
Change of stateChange of state
Change of state
 

Similar to Palestra python

Introdução à Linguagem de programação Python
Introdução à Linguagem de programação PythonIntrodução à Linguagem de programação Python
Introdução à Linguagem de programação Python
dmmartins
 
Introdução a programação
Introdução a programaçãoIntrodução a programação
Introdução a programação
Gustavo Nazário
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem C
apolllorj
 
Classe integer-float-byte-short-long-double
Classe integer-float-byte-short-long-doubleClasse integer-float-byte-short-long-double
Classe integer-float-byte-short-long-double
PAULO Moreira
 
Estrutura de Dados - Características da linguagem C - 1
Estrutura de Dados - Características da linguagem C - 1Estrutura de Dados - Características da linguagem C - 1
Estrutura de Dados - Características da linguagem C - 1
Adriano Teixeira de Souza
 

Similar to Palestra python (20)

Introdução a python
Introdução a pythonIntrodução a python
Introdução a python
 
Exemplos registros e funções
Exemplos registros e funçõesExemplos registros e funções
Exemplos registros e funções
 
Python
PythonPython
Python
 
Introdução à Linguagem de programação Python
Introdução à Linguagem de programação PythonIntrodução à Linguagem de programação Python
Introdução à Linguagem de programação Python
 
Apresentação Lua
Apresentação LuaApresentação Lua
Apresentação Lua
 
Ling c
Ling cLing c
Ling c
 
Introducao ao python - Luciana Mota
Introducao ao python - Luciana MotaIntroducao ao python - Luciana Mota
Introducao ao python - Luciana Mota
 
Workshop Python
Workshop PythonWorkshop Python
Workshop Python
 
Introdução a programação
Introdução a programaçãoIntrodução a programação
Introdução a programação
 
Python Emsl2009
Python Emsl2009Python Emsl2009
Python Emsl2009
 
Meta-programacao em python
Meta-programacao em pythonMeta-programacao em python
Meta-programacao em python
 
Linguagem R
Linguagem RLinguagem R
Linguagem R
 
Ed1
Ed1Ed1
Ed1
 
Objetos Pythonicos - compacto
Objetos Pythonicos - compactoObjetos Pythonicos - compacto
Objetos Pythonicos - compacto
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem C
 
Classe integer-float-byte-short-long-double
Classe integer-float-byte-short-long-doubleClasse integer-float-byte-short-long-double
Classe integer-float-byte-short-long-double
 
Java para iniciantes
Java para iniciantesJava para iniciantes
Java para iniciantes
 
Math
MathMath
Math
 
Minicurso Básico de Python - PythonDay
Minicurso Básico de Python - PythonDayMinicurso Básico de Python - PythonDay
Minicurso Básico de Python - PythonDay
 
Estrutura de Dados - Características da linguagem C - 1
Estrutura de Dados - Características da linguagem C - 1Estrutura de Dados - Características da linguagem C - 1
Estrutura de Dados - Características da linguagem C - 1
 

Palestra python

  • 1. APRESENTANDO João S. O. Bueno Calligaris PÍON Informática
  • 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. Visão Geral e Aspectos Históricos O nome vem do programa de humor "Monty Python Flying Circus", programa de TV do grupo de humoristas inglês. Tornou-se comum o uso de cobras como mascotes, embora na origem a linguagem nada tivesse a ver com "python" como cobra.
  • 4.
  • 5.
  • 6.
  • 7. Alguns Aspectos Técnicos  Multiplataforma  Interpretada  Geração Transparente de BYTECODE  Extensível  De Propósito Geral
  • 8. Filosofia  SEMPRE FOI SOFTWARE LIVRE
  • 9. Filosofia  Liberdade para usar  Liberdade para redistribuir  Liberdade para modificar  Liberdade para distribuir as modificações
  • 10. Exemplo de Programa #!/usr/bin/python # -*- coding: iso-8859-1 -*- from math import sqrt def 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 True a = int (raw_input ("Digite um número:")) if eh_primo (a): print "%d é primo." %a else: print "%d não é primo" %a
  • 11. 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 milhas percorridas, entre as andorinhas Africana e Européia. A partir, pode-se inferir por meios estatísticos a viabilidade ou não do transporte de cocos inteiros por tais aves. """
  • 12. 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'
  • 13. 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 permitem que os campos sejam lidos como um dicionário
  • 14. 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": "Rua dos bobos"}
  • 15. Introdução à Sintaxe Métodos: - Tudo em python é um objeto. Objetos possuem métodos, alguns dos quais podem ser chamados diretamente. EXEMPLOS: - string.upper: - "Morango".upper() -> 'MORANGO' - list.sort - a = [4 ,3 ,2 ,1] - a .sort(); a -> [1, 2, 3, 4]
  • 16. Introdução à Sintaxe Métodos: -- Todos os métodos, e propriedades de uma classe podem 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']
  • 17. Introdução à Sintaxe Atribuição a = 5 b = “Banana” a += 6 b *= 2 print a, b 11 “bananabanana” a, b, c = 1, 2, 3 a->1; b-> 2; c-> 3 Os tipos são definidos dinamicamente, e não há necessidade de se declarar previamente uma variável.
  • 18. Introdução à Sintaxe Controle 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".
  • 19. Introdução à Sintaxe Controle de Fluxo - for – exemplos: nome = "João" for letra in nome: print letra j = 0 for i in range (0, 150): j += i
  • 20. Introdução à Sintaxe Controle de Fluxo - while – exemplo: a = False while not a: #executa tarefas nome = le_nome_do_banco_de_dados() if nome == 'fim': a = True
  • 21. Introdução à Sintaxe Controle de Fluxo - try - except – exemplo: a = raw_input (“digite um número”) try: b = 10.0 / a except: print “Você não digitou um número válido para divisor” else: print “O resultado é %d” % b
  • 22. Introdução à Sintaxe Funções: - Exemplos: def quadrado (a): return a * a def junta_palavras (*palavras): resultado = “” for palavra in palavras: resultado += palavra return resultado
  • 23. Introdução à Sintaxe Funções: - Exemplo: from math import log def 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
  • 24. Exemplo de Programa #!/usr/bin/python # -*- coding: iso-8859-1 -*- from math import sqrt def 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 True a = int (raw_input ("Digite um número:")) if eh_primo (a): print "%d é primo." %a else: print "%d não é primo" %a
  • 25. Orientação a Objeto  Um objeto é um conjunto de dados com funções associadas  Esses dados e funções estão estruturados de acordo com a informação contida na “classe” a que esse objeto pertence  As funções são chamadas de “métodos” do objeto, e os dados de “propriedades”  Em Python, tudo é um objeto
  • 26. Orientação a Objeto Exemplo: import math class 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)
  • 27. Orientação a Objeto Herança - Exemplo import math class Pessoa(object): def __init__(self, nome=””, email=””): self.nome = nome self.email = email class Vendedor (Pessoa): def __init__ (self, nome=””, email=””, numero=0, comissao=0.0): self.numero = numero self.comissao = comissao Pessoa.__init__ (self, nome, email)
  • 28. Orientação a Objeto Herança - Exemplo import math class cliente (Pessoa): def __init__ (self, nome=””, email=””, tel=””, empresa=””): self.tel=tel self.empresa = empresa Pessoa.__init__ (self, nome, email)
  • 29. Orientação a Objeto Herança - Exemplo class My_int (int): def __add__ (self, fator): return self - fator b = My_int (10) print b 10 print b - 3 7 print b + 3 7
  • 30. Orientação a Objeto Herança Múltipla - Exemplo class Cliente (Empresa, Pessoa): pass Se houverem métodos com o mesmo nome nas classes Empresa e Pessoa, os da classe Empresa serão usados por que ela está antes na lista de “ancestrais”.
  • 31. Módulos Pode-se definir várias classes correlatas num arquivo .py qualquer, e usa-las após importar esse arquivo, que então se torna um “módulo”. import entidades p = entidades.Cliente () p2 = entidades.Empresa () Desta forma, nomes definidos dentro do módulo “entidades” não se confundem com variáveis locais.
  • 32. Módulos Opcionalmente, em programas mais simples, ou quando vai se usar somente um sub-módulo, os conteúdos de um módulo podem ser jogados no escopo local: from math import * from sys import argv import pygame.display as disp
  • 33. Módulos Padrão A instalação do Python é acompanhada de dezenas de mó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.
  • 34. Módulos Padrão O módulo “os” contém funções para manipular o sistema de arquivos, e algumas constantes para assegurar a operação entre plataformas diferentes Exemplos: os.unlink os.chdir os.path.sep
  • 35. Módulos Padrão O módulo “sys” contém recursos do ambiente em que o programa é executado Exemplos: sys.path sys.argv sys.stdin
  • 36. Módulos Padrão O módulo “math” como já visto, contém funções matemáticas que vão além das 4 operações básicas, tais com funções trigonométricas, logarítmicas, etc... Para matemática mais elaborada, como cálculo numérico com matrizes, ou cálculo simbólico, deve se usar módulos de terceiros, também disponíveis, como SCIPY ou NUMERIC
  • 37. 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
  • 38. Documentação O modo interativo dispõe da função HELP que exibe as strings de documentaçã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.
  • 39. Documentação Com o python é fornecido um programa separado – o Pydoc – que pode listar todos os módulos instalados no sistema, e o conteúdo e strings de ajuda de cada módulo. Um dos modos de operação do pydoc é a criação de um servidor http numa porta específicada. Então a documentação pode ser vista através da URL http://localhost:porta pydoc -p 2080 firefox http://localhost:2080
  • 40. Outros Módulos Módulos que trabalham com bibliotecas desenvolvidas por terceiros, por mais universal que seja sua presença, não fazem parte da instalação padrão do Python. Em sua maioria, estão listados em http://www.python.org/pypi, e incluem 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í.
  • 41. Interface Gráfica O 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, a aparência de janelas criadas com o Tkinter pode parecer pobre. É software livre, leve, funciona bem em ambiente Windows e X11
  • 42. Interface Gráfica Exemplo de Tkinter: from Tkinter import * root = Tk() w = Label(root, text="Hello, world!") w.pack() root.mainloop()
  • 43. Interface Gráfica PyGTK é o módulo que dá acesso à GTK “the GIMP Tool Kit”. Ë muito mais completa que o Tkinter, funciona bem em windows e X11, mas não acompanha o Python, devendo ser instalada separadamente. Sua programação é um pouco mais complexa. Como é o toolkit padrão do ambiente Gnome, aplicativos desenvolvidos em PyGTK se integram totalmente com esse ambiente.
  • 44. Interface Gráfica Exemplo de PyGTK from gtk import * window = GtkWindow(WINDOW_TOPLEVEL) window.set_border_width(10) button = GtkButton("Hello, World!") window.add(button) button.show() window.show() mainloop()
  • 45. Interface Gráfica PyQT é o módulo, de terceiros, que faz a ligação com a biblioteca 'QT'- padrão do KDE. É muito completa, e mais fá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 que a próxima versão – QT 4 – será disponibilizada sob a GPL para Windows também). Atualmente, a PyQT é mantida pelo projeto KDE.
  • 46. Interface Gráfica Exemplo de PyQT import sys from qt import * a = QApplication(sys.argv) hello = QPushButton("Hello world!",None) hello.resize(100,30) a.setMainWidget(hello) hello.show() a.exec_loop()
  • 47. Multimídia O módulo “pygame” provê a funcionalidade do SDL para o python. Uma biblioteca multiplataforma, para acesso direto ao vídeo e ao som, torna simples o desenvolvimento de aplicativos gráficos, de áudio e mesmo para reproduzir vídeo.
  • 48. Multimídia Exemplo de Pygame from pygame import * from time import sleep display.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()
  • 49. Aspectos Técnicos Python compila dinamicamente os programas para bytecode. Se um programa é importado como módulo, o seu bytecode pré compilado é salvo de forma transparente na forma de um arquivo “.pyc” Em geral, recomenda-se que se trabalhe com versões de código aberto dos programas – mesmo que sejam distribuidos só o bytecode de um software, não é difícil “descompilar” o programa Python.
  • 50. Aspectos Técnicos Integrando com outras linguagens: C Alguns dos módulos de python são apenas uma fina “camada” de código para que o python possa enxergar uma biblioteca escrita em “C”. Dessa forma, optem-se quase a mesma performance que uma aplicação em C teria, mesmo para tarefas que usem muitos recursos, como edição de vídeo, escrevendo-se uma fração do código que seria necessário para a mesma funcionalidade em C.
  • 51. Aspectos Técnicos Integrando com outras linguagens: C Alternativamente, o software “pyrex” permite que se escreva código que se assemelha a uma extensão do Python, onde se pode explicitar que variáveis/funções serã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 processamento mais intenso, fazendo-se uso de estruturas nativas do C.
  • 52. Aspectos Técnicos Integrando com outras linguagens: JAVA O próprio site oficial do Python provê um interpretador alternativo – o Jython, que compila os scripts Python para bytecode JAVA. Um aplicativo que use o Jython pode importar qualquer classe do Java, e usar sua extensa API, sem penalidades, com a vantagem do menor tempo de desenvolvimento inerente ao Python.
  • 53. Embutindo Python Python foi desenhado de forma que seja fácil adicionar a programas em C a capacidade de executarem “plug-ins” escritos em python. Dada a facilidade para escrever e manter código, isso propicia muita flexibilidade para esses programas. As informações necessárias para se embutir um interpretador python em outro programa constam do próprio site do python. Alguns programas que possuem extensão em python: GIMP, Blender e Gnumeric
  • 54. Embutindo Python Exemplo 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) .