SlideShare une entreprise Scribd logo
1  sur  52
Télécharger pour lire hors ligne
Introdução a Linguagem
de Programação Python

Flávio Ribeiro
flavio.ribeiro@avaty.com.br
Agenda

    O que é Python?


    Por que Usar Python


    O Interpretador Interativo


    Variáveis e Tipos


    Regras e Sintaxe


    Funções


    Introdução a Orientação a Objetos em Python


    Algumas Práticas


     Threads

     Sockets

     Extendendo Python com C




                                  1               www.avaty.com.br
    Janeiro de 2008
Quem sou?

    Flávio Ribeiro





        Graduando em Engenharia Elétrica – IFPB
    

        Estagiário Avaty! Tecnologia e Inovação
    

        Fundador do Núcleo Comunicação Digital - IFPB
    

        Entusiasta
    

         Python

         Sistemas Embarcados

         Dispositivos Móveis




        http://flavioribeiro.com
    

        flavio.ribeiro@avaty.com.br
    

        flavioribeiro @ freenode #python-br
    




                                      2                 www.avaty.com.br
    Janeiro de 2008
O que é Python?

    Linguagem de Altíssimo Nível (Very High Level Language)





    Suporta múltiplos paradigmas


     Estruturada

     Orientação a Objetos




    Case Sensitive





    Interpretada


      Transformação source > bytecode




    Tipagem Dinâmica





    Multiplataforma


     Symbian, Linux, Windows, OSX




    “Baterias Inclusas”




                                   3               www.avaty.com.br
    Janeiro de 2008
Por que usar Python?

    Python vai na web, no desktop, OLPC, Celulares, Internet Tablets...





                                    4                 www.avaty.com.br
    Janeiro de 2008
Por que usar Python?

    Python vai na web, no desktop, OLPC, Celulares, Internet Tablets...





                                    5                 www.avaty.com.br
    Janeiro de 2008
Por que usar Python?

    Python vai na web, no desktop, OLPC, Celulares, Internet Tablets...





                                    6                 www.avaty.com.br
    Janeiro de 2008
Por que usar Python?

    Python vai na web, no desktop, OLPC, Celulares, Internet Tablets...





    “7ª Linguagem mais utilizada” (TIOBE 2009)


        É uma porcentagem, não ajustada, sobre a quantidade de hits em 5 engines de
    

        procura.

    Quem usa Python?





                                               7                     www.avaty.com.br
    Janeiro de 2008
Antes de Comecar...

    Python 2.x vs. Python 3.0





        Quebra de Compatibilidade
    

         Print() é uma função

         Dicionários remodelados (métodos de iteração retirados)

         Strings agora são sempre unicode (modelo java-like)

         Divisão de inteiros retorna float (// pra old-style)




        Como converter código 2.x pra 3.0?
    




         A continuação da série 2.x
    

         multiprocess




                                      8               www.avaty.com.br
Janeiro de 2008
O Interpretador Interativo

    O que é?





        Aplicação nativa para testes de código
    




        Interpretador run-in-time
    




                                     9           www.avaty.com.br
Janeiro de 2008
Variáveis e Tipos

        Tipagem Dinâmica
    




        >>> a = 1
        >>> type(a)
        <type 'int'>
        >>> a = 'flavio'
        >>> type(a)
        <type 'str'>

    Tipos Nativos


        float, int, long, boolean, strings, listas, tuplas e dicionários.




                                        10                  www.avaty.com.br
    Janeiro de 2008
Variáveis e Tipos

    Strings


         Objeto iterável

         Imutável

         Aspas simples (') e duplas (“)

         Acessivel através de indices

         Operador de concatenação: +

         upper() , count(), title(), find(), startswith(), isalpha(),

          isdigit()
         Slice e Substrings através de índices

         Membership


           >>> 'io' in 'flavio'
           True




                                        11                 www.avaty.com.br
    Janeiro de 2008
Variáveis e Tipos

    Listas


        Objeto iterável

        Mutável

        Objetos dentro de colchetes []

        Acessivel através de indices

        Aceita vários tipos de objetos diferentes

        Lista bi-dimensional

        Concatenação de listas

          + e extend()

        Adição de Objetos

          append() e insert()

        Remoção de Objetos

          pop() e remove()

        Index(), sort(), reverse(), count()

          Slicing




                                     12              www.avaty.com.br
    Janeiro de 2008
Variáveis e Tipos

    A Função range()





        Função geradora de iteradores
    

        Útil na construção de laços for
    




        >>>   range(4)
        [0,   1, 2, 3]
        >>>   range(4,9)
        [4,   5, 6, 7, 8]
        >>>   range(0,10,2)
        [0,   2, 4, 6, 8]

        xrange() = range() no Py3k
    




                                          13   www.avaty.com.br
    Janeiro de 2008
Variáveis e Tipos

    Tuplas





        Existência questionada
    

        Imutável
    

        Delimita objetos por ()
    

        Indicado para retorno de funçõesmétodos com múltiplos valores
    




        >>> a = (1,2,3,'flavio','avaty!')
        >>> a[0]
        1
        >>> a[3]
        'flavio'
        >>>


                                     14               www.avaty.com.br
    Janeiro de 2008
Variáveis e Tipos

    Dicionários





        Mapping
    

        Estrutura mais poderosa em Python (na minha opinião ;-)
    

        Delimita os objetos com {}
    

        Par CHAVE:VALOR
    

         Chave só pode ser tipos imutáveis

        Sem ordem fixa
    



        >>> info = {'nome':'Flavio','idade':
        21,'interesses' :
        ['python','embedded','linux']}
        >>> info['idade']
        21


                                     15               www.avaty.com.br
    Janeiro de 2008
Variáveis e Tipos

    Dicionários





        Gerando Iteradores
    

         dict.keys()

         dict.values()

        Adicionando pares chave: valor
    

        Buscando Valores
    

         dict.has_key('chave')

        Somar dois dicionários
    

         dict1.update(dict2)

        Apagar tudo
    

         dict.clear()




                                     16   www.avaty.com.br
    Janeiro de 2008
Transformação de Tipos

    Funções Embutidas


      Int(), long(), float(), list(), dict(), tuple(), bool(), str()




    Transformações string <> lista


     O método join()

     O método split()




                                            17                   www.avaty.com.br
    Janeiro de 2008
EntradaSaída

  A função raw_input()


 A função input()

 A instrução print




            Exerc ício!
              Capturar uma string como entrada de dados de um usuário
              onde conterá seu nome, idade e profissão, todos separados
              por uma contra-barra. Armazenar esses dados em um
              dicionário e imprimir.

              Ex:
              Entrada: flavio21programador
              Saida: {'idade': 21, 'profissao': 'programador', 'nome': 'flavio'}




                                          18                     www.avaty.com.br
    Janeiro de 2008
Regras e Sintaxe

    Palavras Reservadas



       and    assert     break   class   continue   while
       def    del        elif    else    except     exec
       if     import     in      is      lambda     not
       or     pass       print   raise   return     try
    Blocos


     Identação obrigatória

       TAB's ou 4 espaços




                                 19            www.avaty.com.br
    Janeiro de 2008
Instruções Condicionais

    Operadores de Comparação


     ==

     !=

     ><

     Is

     In




    if – elif – else



     >>> if nota >= 7:
     ...       print 'Parabens.'
     ... elif nota >= 5:
     ...       print 'Voce esta na recuperacao!'
     ... else:
     ...       print 'Voce foi reprovado.'

                               20   www.avaty.com.br
    Janeiro de 2008
Instruções de Repetição

    while




     >>> numero = 20
     >>> while numero > 10:
     ... numero= input(quot;Digite um numero: quot;)
     ...
     Digite um numero: 11
     Digite um numero: 12
     Digite um numero: 2923929
     Digite um numero: 9
     >>>




                         21        www.avaty.com.br
    Janeiro de 2008
Instruções de Repetição

    For




     >>> for var in objeto_iteravel:

    Exemplo:





     >>> for numero in [1,2,3,4]:
     ...     print numero,
     ...
     1234
     >>>




                         22            www.avaty.com.br
    Janeiro de 2008
Instruções de Repetição

    Mais Exemplos




>>> dic = {'flavio' : 21, 'theo' : 19, 'andre' : 26}
>>> for nome in dic.keys():
...     print nome, 'tem', dic[nome], 'anos.'
...
theo tem 19 anos.
andre tem 26 anos.
flavio tem 21 anos.
>>> for par in range(2,9,2):
...     print par, 'eh par.'
...
2 eh par.
4 eh par.
6 eh par.
8 eh par.

                         23           www.avaty.com.br
    Janeiro de 2008
Instruções de Repetição

       Exerc ício!
        Capturar entradas de dados do usuário, checar se é inteiro ou
        string, e dependendo de qual for, adicionar as strings em uma
        lista ou somar os numeros entrados. O programa encerra
        quando o usuário digitar $. Imprimir a lista de strings e a soma
        de numeros.

        Ex:
        Entrada:
        1
        flavio
        30
        ribeiro
        $
        Saida:
        ['flavio','ribeiro']
        31



                                   24                     www.avaty.com.br
Janeiro de 2008
Funções

     Sintaxe:
 



def nome_da_funcao(parametros):
  bloco de comandos
  return saida1,saida2
     Exemplo
 




>>> def soma(num1,num2):
...     return num1+num2
...
>>> soma(3,5)
8


                     25           www.avaty.com.br
Janeiro de 2008
Funções

     Parâmetros Opcionais
 



>>> def soma(num1,num2=10):
...     return num1+num2
...
>>> soma(3)
13
>>> soma(4,10)
14




                            26   www.avaty.com.br
Janeiro de 2008
Funções

     Inúmeros Parâmetros
 



>>> def soma(*args):
...     return sum(args)
...
>>> soma(2,3,4,5,6,7,8)
35
>>> soma(2)
2




                           27   www.avaty.com.br
Janeiro de 2008
Funções

       Exerc ício!
        Gerar uma função que retorna o número de parâmetos
        passados e uma string com todas os parâmetros concatenados
        como string.
        Ex:
        Entrada
        funcao(1,3,'flavio,'avaty')
        Saída
        (4,'13flavioavaty')




                                28                  www.avaty.com.br
Janeiro de 2008
Orientação a Objetos

    Conceitos necessários


     Classe: Molde

     Objeto: Agente ativo na programação

     Método: Capacidades de ação do agente ativo

     Atributo: Características do agente ativo




    Exemplo:


     Classe: Humorista

     Objeto: Tiririca

     Método: Contar piadas, Imitar Pessoas

     Atributo: Baixo, 44 anos




    Princípio Básico: Capacidade de criar vários objetos a partir de


    uma mesma classe.



                                  29                 www.avaty.com.br
Janeiro de 2008
Orientação a Objetos

    Trazendo pro Python


     Um método tem a mesma sintaxe de uma função

       self explícito

     Atributos recebem um prefixo self.

     Em python não existem atributos e métodos privados

       Convenção de __ (underscores)

     Declaração de uma classe:



    >>> class Nada(object):
    ...     def faz_nada(self):
    ...             print 'Objetos dessa classe
    ...              nao fazem nada.'
    ...



                                 30                www.avaty.com.br
Janeiro de 2008
Orientação a Objetos

     O Método Inicializador
 

      O __init__

      Confundido com o método construtor ( __new__ )

      Exemplo:




>>> class Homem(object):
...     def __init__(self):
...             print 'Fui inicializado!'
...
>>> flavio = Homem()
Fui inicializado!



                                 31               www.avaty.com.br
Janeiro de 2008
Orientação a Objetos

     Passando Argumentos na inicialização
 



>>>   class Homem(object):
...       def __init__(self, nome):
...               self.nome = nome
...               print 'Fui inicializado!'
...               print 'Meu nome eh', self.nome
>>>   flavio = Homem('Flavio')
Fui   inicializado!
Meu   nome eh Flavio
>>>   theo = Homem('Theoziran')
Fui   inicializado!
Meu   nome eh Theoziran


                               32           www.avaty.com.br
 Janeiro de 2008
Orientação a Objetos

    Criando Outros métodos
  

     Método inicializador não necessário


>>> class Jogador(object):
...       def chutar(self, algo):
...                  print quot;Chuteiquot;,algo
...       def correr(self):
...                  print quot;Estou Correndo!quot;
...
>>> ronaldo = Jogador()
>>> ronaldo.chutar('bola')
Chutei bola
>>> ronaldo.chutar('pedra')
Chutei pedra
>>> ronaldo.correr()
Estou Correndo!

                             33                www.avaty.com.br
 Janeiro de 2008
Orientação a Objetos

       Exerc ício!
        Defina uma classe Humano com os atributos nome, sexo,
        idade e cor_do_cabelo. Faça com que o nome e a idade do
        objeto seja impresso ao inicializar, e crie um metodo que
        retorna a cor do cabelo.

        Ex:
        Entrada:
        instancia1 = SuaClasse('Flavio','masculino',21,'marrom')
        instancia1.getCorCabel()
        Saida:
        Oi, sou Flavio e sou do sexo masculino.
        Meu cabelo eh marrom.




                                  34                    www.avaty.com.br
Janeiro de 2008
Orientação a Objetos

    Herança





        Classes new-style já usam a sintaxe de herança pra herdar
    

        object
        Python não chama o inicializador da classe base explicitamente
    




                                    35               www.avaty.com.br
Janeiro de 2008
Orientação a Objetos
  Exemplo
 


class MembroDaFamilia(object):
        def __init__(self,nome):
                self.nome=nome
                print 'meu nome eh',self.nome
        def exibe(self):
                print 'sou',self.nome,'membro da
familia.'

class Pai(MembroDaFamilia):
        def __init__(self, nome, salario):
                MembroDaFamilia.__init__(self,nome)
                self.salario = salario
        def exibe_salario(self):
                print 'eu ganho', self.salario



                        36            www.avaty.com.br
Janeiro de 2008
Algumas Práticas




                       Threads
                   




                       Sockets
                   




                       Extendendo Python
                   

                       com C




                       37           www.avaty.com.br
Janeiro de 2008
Threads


    Threads são fluxos de execução que rodam dentro de um


    processo (aplicação).

    Ainda primitivo


     Não tem stop()

     Comunidade trabalhando nisso

       Multiprocess




    Módulo thread


     Método start_new_thread(func,args)

    Classe threading.Thread


     Criar uma instância de threading.Thread

     Herdar essa classe e sobrescrever o método run()




                                 38                www.avaty.com.br
Janeiro de 2008
Threads


     Criando uma instância de threading.Thread
 



from threading import Thread
def func(parametro):
     print parametro

thr=Thread(target=funcao,args=('qualquercoisa',))

thr.start()




                               39                www.avaty.com.br
Janeiro de 2008
Threads


      Herdar classe Thread e sobrescrever o método run()
  



from threading import Thread
import time
class Processo(Thread):
  def __init__(self,p):
     Thread.__init__(self)
     self.p = p
  def run(self):
     while True:
       print 'up and running :)'
       time.sleep(2)




                               40               www.avaty.com.br
Janeiro de 2008
Threads


       Múltiplas Threads e o problema de regiões críticas
   

        Python implementa lock's

        Outra solução?

          Variáveis de Travamento!


from threading import Thread           while True:
                                          if lock == 0:
from time import sleep                       lock = 1
                                             print 'Região
lock = 0                          critica! Proc:', self.p
                                             lock = 0
class Processo(Thread):
   def __init__(self,p):                      else:
      Thread.__init__(self)                        sleep(3)
      self.p = p                              sleep(1)
   def run(self):
      global lock


                                 41               www.avaty.com.br
 Janeiro de 2008
Sockets


    Socket é o caminho mais simples de comunicação entre dois


    aplicativos localizados em máquinas diferentes.

    Stream Sockets != Datagram Sockets


     Stream Sockets: Conexão Constante

     Datagram Sockets: Sem garantia




                              42              www.avaty.com.br
Janeiro de 2008
Sockets


     Fazendo um Servidor
 



import socket
mySocket = socket.socket(socket.AF_INET, 
socket.SOCK_STREAM)
mySocket.bind(('localhost',2727))
mySocket.listen (1)
while True:
  channel, details = mySocket.accept()
  print 'Conectou: ', details
  print channel.recv ( 100 )
  channel.send('Mensagem do Servidor :)')
  channel.close()



                           44      www.avaty.com.br
Janeiro de 2008
Sockets


     Fazendo um Cliente
 

      No interpretador interativo



import socket
s = socket.socket(socket.AF_INET, 
socket.SOCK_STREAM)
s.conect(('localhost',2727)
s.send('Enviando msg do cliente...')
s.recv(100)
s.close()




                                     44   www.avaty.com.br
Janeiro de 2008
Sockets

        Exerc ício!
          Fazer um servidor escutar 2 clientes e repassar a mensagem
          entre eles, gerando um chat com 2 clientes.

          Sugestão: Colocar alguma flag de identificação.



        Exerc ício!
          Fazer um servidor escutar inúmeros clientes, com inúmeras
          conexões utilizando threads.




      Coding Dojo?
  




                                    45                      www.avaty.com.br
Janeiro de 2008
Extendendo Python com C


    Existem várias maneiras de integrar C e Python





        Cython
    

         Código híbrido




        Python/C API
    

         Interpretador embutido no código C

         Chamada a funções de conversão de tipos CPython

         Main() inicializando as funções C




        Ctypes
    

         Código C puro

         Módulo ctypes fazendo a 'cola'




                                    46             www.avaty.com.br
Janeiro de 2008
Extendendo Python com C


     Cython em Um Exemplo
 


def primes(int kmax):
    cdef int n, k, i
    cdef int p[1000]
    result = []
    if kmax > 1000:
        kmax = 1000
    k=0
    n=2
    while k < kmax:
        i=0
        while i < k and n % p[i] != 0:
            i=i+1
        if i == k:
            p[k] = n
            k=k+1
            result.append(n)
        n=n+1
    return result


                                 47      www.avaty.com.br
Janeiro de 2008
Extendendo Python com C


    Extendendo com a PythonC API


     “Template” desenvolvido pra criação de módulos

     Disponível em:

      http://www.flavioribeiro.com/v2.0/2009/01/14/extendendo-
      python-com-c/




                                 48                www.avaty.com.br
Janeiro de 2008
Hora da 
random.choice([pergunta, dúvida, 
discussão])


                  49        www.avaty.com.br
Janeiro de 2008
Obrigado! ;)

     http://flavioribeiro.com
 

     flavio.ribeiro@avaty.com.br
 

     flavioribeiro @ freenode #python-br
 




                                  50       www.avaty.com.br
Janeiro de 2008
Referências


    http://corecode.wordpress.com/2008/12/02/algoritmos-de-exclusao-m


    http://xintron.se/notebook/python-threads/


    http://blog.felisberto.net/2007/04/11/python-threads-and-the-gil/


    http://medeubranco.wordpress.com/2008/07/10/threads-em-


    python/
    http://docs.cython.org/


    http://corecode.wordpress.com/2008/12/02/algoritmos-de-


    exclusao-mutua-regioes-criticas-em-python-2/
    http://ldev.wordpress.com/2007/10/15/principios-de-sockets-em-


    python/
    http://www.flavioribeiro.com





                                51               www.avaty.com.br
Janeiro de 2008

Contenu connexe

Tendances

Python e django na prática
Python e django na práticaPython e django na prática
Python e django na práticaRafael Cassau
 
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 PythonCarlos Schults
 
Apresentando a Linguagem de Programação Python
Apresentando a Linguagem de Programação PythonApresentando a Linguagem de Programação Python
Apresentando a Linguagem de Programação PythonPriscila Mayumi
 
Python - Introdução Básica
Python - Introdução BásicaPython - Introdução Básica
Python - Introdução BásicaChristian Perone
 
Introdução à Programação em Python
Introdução à Programação em PythonIntrodução à Programação em Python
Introdução à Programação em PythonRodrigo Hübner
 
Introdução à linguagem Python
Introdução à linguagem PythonIntrodução à linguagem Python
Introdução à linguagem PythonAlex Tercete
 
Introdução a linguagem Python
Introdução a linguagem PythonIntrodução a linguagem Python
Introdução a linguagem PythonLuciano Ramalho
 
Introdução à Programação Python e Tk
Introdução à Programação Python e TkIntrodução à Programação Python e Tk
Introdução à Programação Python e TkCarlos Campani
 
Python - Programação funcional
Python - Programação funcionalPython - Programação funcional
Python - Programação funcionalfabiocerqueira
 
Conhencendo Python e por que ela importa?
Conhencendo Python e por que ela importa?Conhencendo Python e por que ela importa?
Conhencendo Python e por que ela importa?Marcel Caraciolo
 
Palestra Apresentando Python e Suas Aplicações
Palestra Apresentando Python e Suas AplicaçõesPalestra Apresentando Python e Suas Aplicações
Palestra Apresentando Python e Suas AplicaçõesMarcos Thomaz
 
Postgresql + Python = Power!
Postgresql + Python = Power!Postgresql + Python = Power!
Postgresql + Python = Power!Juliano Atanazio
 
Desenvolvendo aplicações web com python e web2py
Desenvolvendo aplicações web com python e web2pyDesenvolvendo aplicações web com python e web2py
Desenvolvendo aplicações web com python e web2pyGilson Filho
 
Python para desenvolvedores - material apoio (parte I)
Python para desenvolvedores - material apoio (parte I)Python para desenvolvedores - material apoio (parte I)
Python para desenvolvedores - material apoio (parte I)Marcelo Barros de Almeida
 
Python Módulo Básico - Introdução a linguagem Python
Python Módulo Básico - Introdução a linguagem PythonPython Módulo Básico - Introdução a linguagem Python
Python Módulo Básico - Introdução a linguagem Pythonantonio sérgio nogueira
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 1
Implementação de Aplicações Móveis e Jogos com Python - Aula 1Implementação de Aplicações Móveis e Jogos com Python - Aula 1
Implementação de Aplicações Móveis e Jogos com Python - Aula 1Flávio Ribeiro
 

Tendances (20)

Programando com Python
Programando com PythonProgramando com Python
Programando com Python
 
Python e django na prática
Python e django na práticaPython e django na prática
Python e django na prática
 
Python - Introdução
Python - IntroduçãoPython - Introdução
Python - Introdução
 
Curso de Python e Django
Curso de Python e DjangoCurso de Python e Django
Curso de Python e Django
 
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
 
Apresentando a Linguagem de Programação Python
Apresentando a Linguagem de Programação PythonApresentando a Linguagem de Programação Python
Apresentando a Linguagem de Programação Python
 
Python - Introdução Básica
Python - Introdução BásicaPython - Introdução Básica
Python - Introdução Básica
 
Introdução à Programação em Python
Introdução à Programação em PythonIntrodução à Programação em Python
Introdução à Programação em Python
 
Introdução à linguagem Python
Introdução à linguagem PythonIntrodução à linguagem Python
Introdução à linguagem Python
 
Introdução a linguagem Python
Introdução a linguagem PythonIntrodução a linguagem Python
Introdução a linguagem Python
 
Introdução à Programação Python e Tk
Introdução à Programação Python e TkIntrodução à Programação Python e Tk
Introdução à Programação Python e Tk
 
Python - Programação funcional
Python - Programação funcionalPython - Programação funcional
Python - Programação funcional
 
Conhencendo Python e por que ela importa?
Conhencendo Python e por que ela importa?Conhencendo Python e por que ela importa?
Conhencendo Python e por que ela importa?
 
Palestra Apresentando Python e Suas Aplicações
Palestra Apresentando Python e Suas AplicaçõesPalestra Apresentando Python e Suas Aplicações
Palestra Apresentando Python e Suas Aplicações
 
Postgresql + Python = Power!
Postgresql + Python = Power!Postgresql + Python = Power!
Postgresql + Python = Power!
 
Desenvolvendo aplicações web com python e web2py
Desenvolvendo aplicações web com python e web2pyDesenvolvendo aplicações web com python e web2py
Desenvolvendo aplicações web com python e web2py
 
Python para desenvolvedores - material apoio (parte I)
Python para desenvolvedores - material apoio (parte I)Python para desenvolvedores - material apoio (parte I)
Python para desenvolvedores - material apoio (parte I)
 
Python Módulo Básico - Introdução a linguagem Python
Python Módulo Básico - Introdução a linguagem PythonPython Módulo Básico - Introdução a linguagem Python
Python Módulo Básico - Introdução a linguagem Python
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 1
Implementação de Aplicações Móveis e Jogos com Python - Aula 1Implementação de Aplicações Móveis e Jogos com Python - Aula 1
Implementação de Aplicações Móveis e Jogos com Python - Aula 1
 
Django Básico
Django BásicoDjango Básico
Django Básico
 

En vedette

Linux em Sistemas Embarcados
Linux em Sistemas EmbarcadosLinux em Sistemas Embarcados
Linux em Sistemas EmbarcadosFlávio Ribeiro
 
Linux4all#1
Linux4all#1Linux4all#1
Linux4all#1Daniel
 
Fundamentos de Logica de Programação | Linguagem C
Fundamentos de Logica de Programação | Linguagem CFundamentos de Logica de Programação | Linguagem C
Fundamentos de Logica de Programação | Linguagem CRogerio de Moraes
 
Extraindo dados públicos na marra com Python
Extraindo dados públicos na marra com PythonExtraindo dados públicos na marra com Python
Extraindo dados públicos na marra com PythonPedro Valente
 
Aprendendo python 2a edição
Aprendendo python   2a ediçãoAprendendo python   2a edição
Aprendendo python 2a ediçãoCAVN/UFPB III
 
Python e Django na Globo.com
Python e Django na Globo.comPython e Django na Globo.com
Python e Django na Globo.comricobl
 
Introdução a estrutura de dados josé lucas rangel - raulzinho.cb@hotmail.com
Introdução a estrutura de dados   josé lucas rangel - raulzinho.cb@hotmail.comIntrodução a estrutura de dados   josé lucas rangel - raulzinho.cb@hotmail.com
Introdução a estrutura de dados josé lucas rangel - raulzinho.cb@hotmail.comRaul Batalha
 
Python para iniciantes
Python para iniciantesPython para iniciantes
Python para iniciantesrichardsonlima
 

En vedette (15)

Linux em Sistemas Embarcados
Linux em Sistemas EmbarcadosLinux em Sistemas Embarcados
Linux em Sistemas Embarcados
 
Linux4all#1
Linux4all#1Linux4all#1
Linux4all#1
 
Comandos linux
Comandos linux Comandos linux
Comandos linux
 
Comandos Linux Parte 2
Comandos Linux Parte 2Comandos Linux Parte 2
Comandos Linux Parte 2
 
Comandos Linux Parte 1
Comandos Linux Parte 1Comandos Linux Parte 1
Comandos Linux Parte 1
 
Fundamentos de Logica de Programação | Linguagem C
Fundamentos de Logica de Programação | Linguagem CFundamentos de Logica de Programação | Linguagem C
Fundamentos de Logica de Programação | Linguagem C
 
Ensinando OO com Python
Ensinando OO com PythonEnsinando OO com Python
Ensinando OO com Python
 
Python for zombies (very basic level)
Python for zombies (very basic level)Python for zombies (very basic level)
Python for zombies (very basic level)
 
Extraindo dados públicos na marra com Python
Extraindo dados públicos na marra com PythonExtraindo dados públicos na marra com Python
Extraindo dados públicos na marra com Python
 
Aprendendo python 2a edição
Aprendendo python   2a ediçãoAprendendo python   2a edição
Aprendendo python 2a edição
 
Python e Django na Globo.com
Python e Django na Globo.comPython e Django na Globo.com
Python e Django na Globo.com
 
Lista de exercícios I python para zumbis
Lista de exercícios I python para zumbisLista de exercícios I python para zumbis
Lista de exercícios I python para zumbis
 
Hackeando Dados públicos com python
Hackeando Dados públicos com pythonHackeando Dados públicos com python
Hackeando Dados públicos com python
 
Introdução a estrutura de dados josé lucas rangel - raulzinho.cb@hotmail.com
Introdução a estrutura de dados   josé lucas rangel - raulzinho.cb@hotmail.comIntrodução a estrutura de dados   josé lucas rangel - raulzinho.cb@hotmail.com
Introdução a estrutura de dados josé lucas rangel - raulzinho.cb@hotmail.com
 
Python para iniciantes
Python para iniciantesPython para iniciantes
Python para iniciantes
 

Similaire à Introdução a Linguagem de Programação Python

Python introdução a linguagem de programação
Python introdução a linguagem de programaçãoPython introdução a linguagem de programação
Python introdução a linguagem de programaçãoAlysonTrindadeFernan
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem Capolllorj
 
Algoritmos e LP - Aula 02 - Tipos de Dados.pdf
Algoritmos e LP - Aula 02 - Tipos de Dados.pdfAlgoritmos e LP - Aula 02 - Tipos de Dados.pdf
Algoritmos e LP - Aula 02 - Tipos de Dados.pdfEnio Filho
 
JavaScript - Aula Introdutória
JavaScript - Aula IntrodutóriaJavaScript - Aula Introdutória
JavaScript - Aula Introdutórialucasleite
 
JavaScript ninja com jQuery
JavaScript ninja com jQueryJavaScript ninja com jQuery
JavaScript ninja com jQueryReinaldo Junior
 
Python: a primeira mordida
Python: a primeira mordidaPython: a primeira mordida
Python: a primeira mordidaLuciano Ramalho
 
Introdução à linguagem C#
Introdução à linguagem C#Introdução à linguagem C#
Introdução à linguagem C#Antonio Trigo
 
Python No Terra (2006-12-21)
Python No Terra  (2006-12-21)Python No Terra  (2006-12-21)
Python No Terra (2006-12-21)Rudá Moura
 
Python Com Baterias Incluídas
Python Com Baterias IncluídasPython Com Baterias Incluídas
Python Com Baterias IncluídasJonh Edson
 
Por que Python - Latinoware 2008
Por que Python - Latinoware 2008Por que Python - Latinoware 2008
Por que Python - Latinoware 2008Marco Mendes
 
Smarty Template Engine
Smarty Template EngineSmarty Template Engine
Smarty Template EngineDiego Tremper
 
Introdução a linguagem de programação Python
Introdução a linguagem de programação PythonIntrodução a linguagem de programação Python
Introdução a linguagem de programação PythonMayron Cachina
 

Similaire à Introdução a Linguagem de Programação Python (20)

Mini Curso Python
Mini Curso PythonMini Curso Python
Mini Curso Python
 
Workshop Python.1
Workshop Python.1Workshop Python.1
Workshop Python.1
 
Minicurso Java && Cl
Minicurso Java && ClMinicurso Java && Cl
Minicurso Java && Cl
 
Python introdução a linguagem de programação
Python introdução a linguagem de programaçãoPython introdução a linguagem de programação
Python introdução a linguagem de programação
 
Programação Orientada a Objetos - 001
Programação Orientada a Objetos - 001Programação Orientada a Objetos - 001
Programação Orientada a Objetos - 001
 
A linguagem Python
A linguagem Python A linguagem Python
A linguagem Python
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem C
 
Introducao Google GO
Introducao Google GOIntroducao Google GO
Introducao Google GO
 
Algoritmos e LP - Aula 02 - Tipos de Dados.pdf
Algoritmos e LP - Aula 02 - Tipos de Dados.pdfAlgoritmos e LP - Aula 02 - Tipos de Dados.pdf
Algoritmos e LP - Aula 02 - Tipos de Dados.pdf
 
JavaScript - Aula Introdutória
JavaScript - Aula IntrodutóriaJavaScript - Aula Introdutória
JavaScript - Aula Introdutória
 
JavaScript ninja com jQuery
JavaScript ninja com jQueryJavaScript ninja com jQuery
JavaScript ninja com jQuery
 
Python: a primeira mordida
Python: a primeira mordidaPython: a primeira mordida
Python: a primeira mordida
 
apresentacao.pdf
apresentacao.pdfapresentacao.pdf
apresentacao.pdf
 
Introdução à linguagem C#
Introdução à linguagem C#Introdução à linguagem C#
Introdução à linguagem C#
 
Python No Terra (2006-12-21)
Python No Terra  (2006-12-21)Python No Terra  (2006-12-21)
Python No Terra (2006-12-21)
 
aula3_python.pptx
aula3_python.pptxaula3_python.pptx
aula3_python.pptx
 
Python Com Baterias Incluídas
Python Com Baterias IncluídasPython Com Baterias Incluídas
Python Com Baterias Incluídas
 
Por que Python - Latinoware 2008
Por que Python - Latinoware 2008Por que Python - Latinoware 2008
Por que Python - Latinoware 2008
 
Smarty Template Engine
Smarty Template EngineSmarty Template Engine
Smarty Template Engine
 
Introdução a linguagem de programação Python
Introdução a linguagem de programação PythonIntrodução a linguagem de programação Python
Introdução a linguagem de programação Python
 

Plus de Flávio Ribeiro

Snickers: Open Source HTTP API for Media Encoding
Snickers: Open Source HTTP API for Media EncodingSnickers: Open Source HTTP API for Media Encoding
Snickers: Open Source HTTP API for Media EncodingFlávio Ribeiro
 
Building a Video Encoding Pipeline at The New York Times
Building a Video Encoding Pipeline at The New York TimesBuilding a Video Encoding Pipeline at The New York Times
Building a Video Encoding Pipeline at The New York TimesFlávio Ribeiro
 
Towards the Application of WebRTC Peer-to-Peer to Scale Live Video Streaming ...
Towards the Application of WebRTC Peer-to-Peer to Scale Live Video Streaming ...Towards the Application of WebRTC Peer-to-Peer to Scale Live Video Streaming ...
Towards the Application of WebRTC Peer-to-Peer to Scale Live Video Streaming ...Flávio Ribeiro
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 3
Implementação de Aplicações Móveis e Jogos com Python - Aula 3Implementação de Aplicações Móveis e Jogos com Python - Aula 3
Implementação de Aplicações Móveis e Jogos com Python - Aula 3Flávio Ribeiro
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 5
Implementação de Aplicações Móveis e Jogos com Python - Aula 5Implementação de Aplicações Móveis e Jogos com Python - Aula 5
Implementação de Aplicações Móveis e Jogos com Python - Aula 5Flávio Ribeiro
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 6
Implementação de Aplicações Móveis e Jogos com Python - Aula 6Implementação de Aplicações Móveis e Jogos com Python - Aula 6
Implementação de Aplicações Móveis e Jogos com Python - Aula 6Flávio Ribeiro
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 4
Implementação de Aplicações Móveis e Jogos com Python - Aula 4Implementação de Aplicações Móveis e Jogos com Python - Aula 4
Implementação de Aplicações Móveis e Jogos com Python - Aula 4Flávio Ribeiro
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 2
Implementação de Aplicações Móveis e Jogos com Python - Aula 2Implementação de Aplicações Móveis e Jogos com Python - Aula 2
Implementação de Aplicações Móveis e Jogos com Python - Aula 2Flávio Ribeiro
 
BemTV: Modelo Híbrido para Transmissão de Vídeos ao Vivo utilizando Peer-to-Peer
BemTV: Modelo Híbrido para Transmissão de Vídeos ao Vivo utilizando Peer-to-PeerBemTV: Modelo Híbrido para Transmissão de Vídeos ao Vivo utilizando Peer-to-Peer
BemTV: Modelo Híbrido para Transmissão de Vídeos ao Vivo utilizando Peer-to-PeerFlávio Ribeiro
 
Desenvolvimento Mobile & Embedded com Arduino, Python, ARM e Linux
Desenvolvimento Mobile & Embedded com Arduino, Python, ARM e LinuxDesenvolvimento Mobile & Embedded com Arduino, Python, ARM e Linux
Desenvolvimento Mobile & Embedded com Arduino, Python, ARM e LinuxFlávio Ribeiro
 
stewie: Machine Learning para detecção não supervisionada de anomalias
stewie: Machine Learning para detecção não supervisionada de anomaliasstewie: Machine Learning para detecção não supervisionada de anomalias
stewie: Machine Learning para detecção não supervisionada de anomaliasFlávio Ribeiro
 
Test Driven Development - Trabalhe tranquilo e maximize sua produtividade
Test Driven Development - Trabalhe tranquilo e maximize sua produtividadeTest Driven Development - Trabalhe tranquilo e maximize sua produtividade
Test Driven Development - Trabalhe tranquilo e maximize sua produtividadeFlávio Ribeiro
 
Desenvolvimento de aplicações embarcadas utilizando Python
Desenvolvimento de aplicações embarcadas utilizando PythonDesenvolvimento de aplicações embarcadas utilizando Python
Desenvolvimento de aplicações embarcadas utilizando PythonFlávio Ribeiro
 

Plus de Flávio Ribeiro (13)

Snickers: Open Source HTTP API for Media Encoding
Snickers: Open Source HTTP API for Media EncodingSnickers: Open Source HTTP API for Media Encoding
Snickers: Open Source HTTP API for Media Encoding
 
Building a Video Encoding Pipeline at The New York Times
Building a Video Encoding Pipeline at The New York TimesBuilding a Video Encoding Pipeline at The New York Times
Building a Video Encoding Pipeline at The New York Times
 
Towards the Application of WebRTC Peer-to-Peer to Scale Live Video Streaming ...
Towards the Application of WebRTC Peer-to-Peer to Scale Live Video Streaming ...Towards the Application of WebRTC Peer-to-Peer to Scale Live Video Streaming ...
Towards the Application of WebRTC Peer-to-Peer to Scale Live Video Streaming ...
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 3
Implementação de Aplicações Móveis e Jogos com Python - Aula 3Implementação de Aplicações Móveis e Jogos com Python - Aula 3
Implementação de Aplicações Móveis e Jogos com Python - Aula 3
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 5
Implementação de Aplicações Móveis e Jogos com Python - Aula 5Implementação de Aplicações Móveis e Jogos com Python - Aula 5
Implementação de Aplicações Móveis e Jogos com Python - Aula 5
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 6
Implementação de Aplicações Móveis e Jogos com Python - Aula 6Implementação de Aplicações Móveis e Jogos com Python - Aula 6
Implementação de Aplicações Móveis e Jogos com Python - Aula 6
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 4
Implementação de Aplicações Móveis e Jogos com Python - Aula 4Implementação de Aplicações Móveis e Jogos com Python - Aula 4
Implementação de Aplicações Móveis e Jogos com Python - Aula 4
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 2
Implementação de Aplicações Móveis e Jogos com Python - Aula 2Implementação de Aplicações Móveis e Jogos com Python - Aula 2
Implementação de Aplicações Móveis e Jogos com Python - Aula 2
 
BemTV: Modelo Híbrido para Transmissão de Vídeos ao Vivo utilizando Peer-to-Peer
BemTV: Modelo Híbrido para Transmissão de Vídeos ao Vivo utilizando Peer-to-PeerBemTV: Modelo Híbrido para Transmissão de Vídeos ao Vivo utilizando Peer-to-Peer
BemTV: Modelo Híbrido para Transmissão de Vídeos ao Vivo utilizando Peer-to-Peer
 
Desenvolvimento Mobile & Embedded com Arduino, Python, ARM e Linux
Desenvolvimento Mobile & Embedded com Arduino, Python, ARM e LinuxDesenvolvimento Mobile & Embedded com Arduino, Python, ARM e Linux
Desenvolvimento Mobile & Embedded com Arduino, Python, ARM e Linux
 
stewie: Machine Learning para detecção não supervisionada de anomalias
stewie: Machine Learning para detecção não supervisionada de anomaliasstewie: Machine Learning para detecção não supervisionada de anomalias
stewie: Machine Learning para detecção não supervisionada de anomalias
 
Test Driven Development - Trabalhe tranquilo e maximize sua produtividade
Test Driven Development - Trabalhe tranquilo e maximize sua produtividadeTest Driven Development - Trabalhe tranquilo e maximize sua produtividade
Test Driven Development - Trabalhe tranquilo e maximize sua produtividade
 
Desenvolvimento de aplicações embarcadas utilizando Python
Desenvolvimento de aplicações embarcadas utilizando PythonDesenvolvimento de aplicações embarcadas utilizando Python
Desenvolvimento de aplicações embarcadas utilizando Python
 

Introdução a Linguagem de Programação Python

  • 1. Introdução a Linguagem de Programação Python Flávio Ribeiro flavio.ribeiro@avaty.com.br
  • 2. Agenda O que é Python?  Por que Usar Python  O Interpretador Interativo  Variáveis e Tipos  Regras e Sintaxe  Funções  Introdução a Orientação a Objetos em Python  Algumas Práticas   Threads  Sockets  Extendendo Python com C 1 www.avaty.com.br Janeiro de 2008
  • 3. Quem sou? Flávio Ribeiro  Graduando em Engenharia Elétrica – IFPB  Estagiário Avaty! Tecnologia e Inovação  Fundador do Núcleo Comunicação Digital - IFPB  Entusiasta   Python  Sistemas Embarcados  Dispositivos Móveis http://flavioribeiro.com  flavio.ribeiro@avaty.com.br  flavioribeiro @ freenode #python-br  2 www.avaty.com.br Janeiro de 2008
  • 4. O que é Python? Linguagem de Altíssimo Nível (Very High Level Language)  Suporta múltiplos paradigmas   Estruturada  Orientação a Objetos Case Sensitive  Interpretada   Transformação source > bytecode Tipagem Dinâmica  Multiplataforma   Symbian, Linux, Windows, OSX “Baterias Inclusas”  3 www.avaty.com.br Janeiro de 2008
  • 5. Por que usar Python? Python vai na web, no desktop, OLPC, Celulares, Internet Tablets...  4 www.avaty.com.br Janeiro de 2008
  • 6. Por que usar Python? Python vai na web, no desktop, OLPC, Celulares, Internet Tablets...  5 www.avaty.com.br Janeiro de 2008
  • 7. Por que usar Python? Python vai na web, no desktop, OLPC, Celulares, Internet Tablets...  6 www.avaty.com.br Janeiro de 2008
  • 8. Por que usar Python? Python vai na web, no desktop, OLPC, Celulares, Internet Tablets...  “7ª Linguagem mais utilizada” (TIOBE 2009)  É uma porcentagem, não ajustada, sobre a quantidade de hits em 5 engines de  procura. Quem usa Python?  7 www.avaty.com.br Janeiro de 2008
  • 9. Antes de Comecar... Python 2.x vs. Python 3.0  Quebra de Compatibilidade   Print() é uma função  Dicionários remodelados (métodos de iteração retirados)  Strings agora são sempre unicode (modelo java-like)  Divisão de inteiros retorna float (// pra old-style) Como converter código 2.x pra 3.0?  A continuação da série 2.x   multiprocess 8 www.avaty.com.br Janeiro de 2008
  • 10. O Interpretador Interativo O que é?  Aplicação nativa para testes de código  Interpretador run-in-time  9 www.avaty.com.br Janeiro de 2008
  • 11. Variáveis e Tipos Tipagem Dinâmica  >>> a = 1 >>> type(a) <type 'int'> >>> a = 'flavio' >>> type(a) <type 'str'> Tipos Nativos   float, int, long, boolean, strings, listas, tuplas e dicionários. 10 www.avaty.com.br Janeiro de 2008
  • 12. Variáveis e Tipos Strings   Objeto iterável  Imutável  Aspas simples (') e duplas (“)  Acessivel através de indices  Operador de concatenação: +  upper() , count(), title(), find(), startswith(), isalpha(), isdigit()  Slice e Substrings através de índices  Membership >>> 'io' in 'flavio' True 11 www.avaty.com.br Janeiro de 2008
  • 13. Variáveis e Tipos Listas   Objeto iterável  Mutável  Objetos dentro de colchetes []  Acessivel através de indices  Aceita vários tipos de objetos diferentes  Lista bi-dimensional  Concatenação de listas  + e extend()  Adição de Objetos  append() e insert()  Remoção de Objetos  pop() e remove()  Index(), sort(), reverse(), count()  Slicing 12 www.avaty.com.br Janeiro de 2008
  • 14. Variáveis e Tipos A Função range()  Função geradora de iteradores  Útil na construção de laços for  >>> range(4) [0, 1, 2, 3] >>> range(4,9) [4, 5, 6, 7, 8] >>> range(0,10,2) [0, 2, 4, 6, 8] xrange() = range() no Py3k  13 www.avaty.com.br Janeiro de 2008
  • 15. Variáveis e Tipos Tuplas  Existência questionada  Imutável  Delimita objetos por ()  Indicado para retorno de funçõesmétodos com múltiplos valores  >>> a = (1,2,3,'flavio','avaty!') >>> a[0] 1 >>> a[3] 'flavio' >>> 14 www.avaty.com.br Janeiro de 2008
  • 16. Variáveis e Tipos Dicionários  Mapping  Estrutura mais poderosa em Python (na minha opinião ;-)  Delimita os objetos com {}  Par CHAVE:VALOR   Chave só pode ser tipos imutáveis Sem ordem fixa  >>> info = {'nome':'Flavio','idade': 21,'interesses' : ['python','embedded','linux']} >>> info['idade'] 21 15 www.avaty.com.br Janeiro de 2008
  • 17. Variáveis e Tipos Dicionários  Gerando Iteradores   dict.keys()  dict.values() Adicionando pares chave: valor  Buscando Valores   dict.has_key('chave') Somar dois dicionários   dict1.update(dict2) Apagar tudo   dict.clear() 16 www.avaty.com.br Janeiro de 2008
  • 18. Transformação de Tipos Funções Embutidas   Int(), long(), float(), list(), dict(), tuple(), bool(), str() Transformações string <> lista   O método join()  O método split() 17 www.avaty.com.br Janeiro de 2008
  • 19. EntradaSaída A função raw_input()   A função input()  A instrução print Exerc ício! Capturar uma string como entrada de dados de um usuário onde conterá seu nome, idade e profissão, todos separados por uma contra-barra. Armazenar esses dados em um dicionário e imprimir. Ex: Entrada: flavio21programador Saida: {'idade': 21, 'profissao': 'programador', 'nome': 'flavio'} 18 www.avaty.com.br Janeiro de 2008
  • 20. Regras e Sintaxe Palavras Reservadas  and assert break class continue while def del elif else except exec if import in is lambda not or pass print raise return try Blocos   Identação obrigatória  TAB's ou 4 espaços 19 www.avaty.com.br Janeiro de 2008
  • 21. Instruções Condicionais Operadores de Comparação   ==  !=  ><  Is  In if – elif – else  >>> if nota >= 7: ... print 'Parabens.' ... elif nota >= 5: ... print 'Voce esta na recuperacao!' ... else: ... print 'Voce foi reprovado.' 20 www.avaty.com.br Janeiro de 2008
  • 22. Instruções de Repetição while  >>> numero = 20 >>> while numero > 10: ... numero= input(quot;Digite um numero: quot;) ... Digite um numero: 11 Digite um numero: 12 Digite um numero: 2923929 Digite um numero: 9 >>> 21 www.avaty.com.br Janeiro de 2008
  • 23. Instruções de Repetição For  >>> for var in objeto_iteravel: Exemplo:  >>> for numero in [1,2,3,4]: ... print numero, ... 1234 >>> 22 www.avaty.com.br Janeiro de 2008
  • 24. Instruções de Repetição Mais Exemplos  >>> dic = {'flavio' : 21, 'theo' : 19, 'andre' : 26} >>> for nome in dic.keys(): ... print nome, 'tem', dic[nome], 'anos.' ... theo tem 19 anos. andre tem 26 anos. flavio tem 21 anos. >>> for par in range(2,9,2): ... print par, 'eh par.' ... 2 eh par. 4 eh par. 6 eh par. 8 eh par. 23 www.avaty.com.br Janeiro de 2008
  • 25. Instruções de Repetição Exerc ício! Capturar entradas de dados do usuário, checar se é inteiro ou string, e dependendo de qual for, adicionar as strings em uma lista ou somar os numeros entrados. O programa encerra quando o usuário digitar $. Imprimir a lista de strings e a soma de numeros. Ex: Entrada: 1 flavio 30 ribeiro $ Saida: ['flavio','ribeiro'] 31 24 www.avaty.com.br Janeiro de 2008
  • 26. Funções Sintaxe:  def nome_da_funcao(parametros): bloco de comandos return saida1,saida2 Exemplo  >>> def soma(num1,num2): ... return num1+num2 ... >>> soma(3,5) 8 25 www.avaty.com.br Janeiro de 2008
  • 27. Funções Parâmetros Opcionais  >>> def soma(num1,num2=10): ... return num1+num2 ... >>> soma(3) 13 >>> soma(4,10) 14 26 www.avaty.com.br Janeiro de 2008
  • 28. Funções Inúmeros Parâmetros  >>> def soma(*args): ... return sum(args) ... >>> soma(2,3,4,5,6,7,8) 35 >>> soma(2) 2 27 www.avaty.com.br Janeiro de 2008
  • 29. Funções Exerc ício! Gerar uma função que retorna o número de parâmetos passados e uma string com todas os parâmetros concatenados como string. Ex: Entrada funcao(1,3,'flavio,'avaty') Saída (4,'13flavioavaty') 28 www.avaty.com.br Janeiro de 2008
  • 30. Orientação a Objetos Conceitos necessários   Classe: Molde  Objeto: Agente ativo na programação  Método: Capacidades de ação do agente ativo  Atributo: Características do agente ativo Exemplo:   Classe: Humorista  Objeto: Tiririca  Método: Contar piadas, Imitar Pessoas  Atributo: Baixo, 44 anos Princípio Básico: Capacidade de criar vários objetos a partir de  uma mesma classe. 29 www.avaty.com.br Janeiro de 2008
  • 31. Orientação a Objetos Trazendo pro Python   Um método tem a mesma sintaxe de uma função  self explícito  Atributos recebem um prefixo self.  Em python não existem atributos e métodos privados  Convenção de __ (underscores)  Declaração de uma classe: >>> class Nada(object): ... def faz_nada(self): ... print 'Objetos dessa classe ... nao fazem nada.' ... 30 www.avaty.com.br Janeiro de 2008
  • 32. Orientação a Objetos O Método Inicializador   O __init__  Confundido com o método construtor ( __new__ )  Exemplo: >>> class Homem(object): ... def __init__(self): ... print 'Fui inicializado!' ... >>> flavio = Homem() Fui inicializado! 31 www.avaty.com.br Janeiro de 2008
  • 33. Orientação a Objetos Passando Argumentos na inicialização  >>> class Homem(object): ... def __init__(self, nome): ... self.nome = nome ... print 'Fui inicializado!' ... print 'Meu nome eh', self.nome >>> flavio = Homem('Flavio') Fui inicializado! Meu nome eh Flavio >>> theo = Homem('Theoziran') Fui inicializado! Meu nome eh Theoziran 32 www.avaty.com.br Janeiro de 2008
  • 34. Orientação a Objetos Criando Outros métodos   Método inicializador não necessário >>> class Jogador(object): ... def chutar(self, algo): ... print quot;Chuteiquot;,algo ... def correr(self): ... print quot;Estou Correndo!quot; ... >>> ronaldo = Jogador() >>> ronaldo.chutar('bola') Chutei bola >>> ronaldo.chutar('pedra') Chutei pedra >>> ronaldo.correr() Estou Correndo! 33 www.avaty.com.br Janeiro de 2008
  • 35. Orientação a Objetos Exerc ício! Defina uma classe Humano com os atributos nome, sexo, idade e cor_do_cabelo. Faça com que o nome e a idade do objeto seja impresso ao inicializar, e crie um metodo que retorna a cor do cabelo. Ex: Entrada: instancia1 = SuaClasse('Flavio','masculino',21,'marrom') instancia1.getCorCabel() Saida: Oi, sou Flavio e sou do sexo masculino. Meu cabelo eh marrom. 34 www.avaty.com.br Janeiro de 2008
  • 36. Orientação a Objetos Herança  Classes new-style já usam a sintaxe de herança pra herdar  object Python não chama o inicializador da classe base explicitamente  35 www.avaty.com.br Janeiro de 2008
  • 37. Orientação a Objetos Exemplo  class MembroDaFamilia(object): def __init__(self,nome): self.nome=nome print 'meu nome eh',self.nome def exibe(self): print 'sou',self.nome,'membro da familia.' class Pai(MembroDaFamilia): def __init__(self, nome, salario): MembroDaFamilia.__init__(self,nome) self.salario = salario def exibe_salario(self): print 'eu ganho', self.salario 36 www.avaty.com.br Janeiro de 2008
  • 38. Algumas Práticas Threads  Sockets  Extendendo Python  com C 37 www.avaty.com.br Janeiro de 2008
  • 39. Threads Threads são fluxos de execução que rodam dentro de um  processo (aplicação). Ainda primitivo   Não tem stop()  Comunidade trabalhando nisso  Multiprocess Módulo thread   Método start_new_thread(func,args) Classe threading.Thread   Criar uma instância de threading.Thread  Herdar essa classe e sobrescrever o método run() 38 www.avaty.com.br Janeiro de 2008
  • 40. Threads Criando uma instância de threading.Thread  from threading import Thread def func(parametro): print parametro thr=Thread(target=funcao,args=('qualquercoisa',)) thr.start() 39 www.avaty.com.br Janeiro de 2008
  • 41. Threads Herdar classe Thread e sobrescrever o método run()  from threading import Thread import time class Processo(Thread): def __init__(self,p): Thread.__init__(self) self.p = p def run(self): while True: print 'up and running :)' time.sleep(2) 40 www.avaty.com.br Janeiro de 2008
  • 42. Threads Múltiplas Threads e o problema de regiões críticas   Python implementa lock's  Outra solução?  Variáveis de Travamento! from threading import Thread while True: if lock == 0: from time import sleep lock = 1 print 'Região lock = 0 critica! Proc:', self.p lock = 0 class Processo(Thread): def __init__(self,p): else: Thread.__init__(self) sleep(3) self.p = p sleep(1) def run(self): global lock 41 www.avaty.com.br Janeiro de 2008
  • 43. Sockets Socket é o caminho mais simples de comunicação entre dois  aplicativos localizados em máquinas diferentes. Stream Sockets != Datagram Sockets   Stream Sockets: Conexão Constante  Datagram Sockets: Sem garantia 42 www.avaty.com.br Janeiro de 2008
  • 44. Sockets Fazendo um Servidor  import socket mySocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) mySocket.bind(('localhost',2727)) mySocket.listen (1) while True: channel, details = mySocket.accept() print 'Conectou: ', details print channel.recv ( 100 ) channel.send('Mensagem do Servidor :)') channel.close() 44 www.avaty.com.br Janeiro de 2008
  • 45. Sockets Fazendo um Cliente   No interpretador interativo import socket s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.conect(('localhost',2727) s.send('Enviando msg do cliente...') s.recv(100) s.close() 44 www.avaty.com.br Janeiro de 2008
  • 46. Sockets Exerc ício! Fazer um servidor escutar 2 clientes e repassar a mensagem entre eles, gerando um chat com 2 clientes. Sugestão: Colocar alguma flag de identificação. Exerc ício! Fazer um servidor escutar inúmeros clientes, com inúmeras conexões utilizando threads. Coding Dojo?  45 www.avaty.com.br Janeiro de 2008
  • 47. Extendendo Python com C Existem várias maneiras de integrar C e Python  Cython   Código híbrido Python/C API   Interpretador embutido no código C  Chamada a funções de conversão de tipos CPython  Main() inicializando as funções C Ctypes   Código C puro  Módulo ctypes fazendo a 'cola' 46 www.avaty.com.br Janeiro de 2008
  • 48. Extendendo Python com C Cython em Um Exemplo  def primes(int kmax): cdef int n, k, i cdef int p[1000] result = [] if kmax > 1000: kmax = 1000 k=0 n=2 while k < kmax: i=0 while i < k and n % p[i] != 0: i=i+1 if i == k: p[k] = n k=k+1 result.append(n) n=n+1 return result 47 www.avaty.com.br Janeiro de 2008
  • 49. Extendendo Python com C Extendendo com a PythonC API   “Template” desenvolvido pra criação de módulos  Disponível em: http://www.flavioribeiro.com/v2.0/2009/01/14/extendendo- python-com-c/ 48 www.avaty.com.br Janeiro de 2008
  • 50. Hora da  random.choice([pergunta, dúvida, discussão]) 49 www.avaty.com.br Janeiro de 2008
  • 51. Obrigado! ;) http://flavioribeiro.com  flavio.ribeiro@avaty.com.br  flavioribeiro @ freenode #python-br  50 www.avaty.com.br Janeiro de 2008
  • 52. Referências http://corecode.wordpress.com/2008/12/02/algoritmos-de-exclusao-m  http://xintron.se/notebook/python-threads/  http://blog.felisberto.net/2007/04/11/python-threads-and-the-gil/  http://medeubranco.wordpress.com/2008/07/10/threads-em-  python/ http://docs.cython.org/  http://corecode.wordpress.com/2008/12/02/algoritmos-de-  exclusao-mutua-regioes-criticas-em-python-2/ http://ldev.wordpress.com/2007/10/15/principios-de-sockets-em-  python/ http://www.flavioribeiro.com  51 www.avaty.com.br Janeiro de 2008