1 / 54

Python

Python. Andrea Menezes (afm3) Maíra Nascimento (mcn2). Agenda. O que é Python Por que usar python História Quem usa Python Características A Liguagem. O que é Python. Python. Linguagem de alto nível Orientada a Objetos Interpretada Não é apenas uma linguagem de script

Download Presentation

Python

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Python Andrea Menezes (afm3) Maíra Nascimento (mcn2)

  2. Agenda • O que é Python • Por que usar python • História • Quem usa Python • Características • A Liguagem

  3. O que é Python

  4. Python • Linguagem de alto nível • Orientada a Objetos • Interpretada • Não é apenas uma linguagem de script • Fácil de usar e de aprender

  5. Por que usar Python

  6. Por que usar Python? • Conceitos fundamentais simples • Sintaxe clara – muito próxima de um pseudo-código • Código curto e legível • Tipos pré-definidos poderosos • Possui um vasto repertório de bibliotecas • Ciclo de desenvolvimento rápido

  7. Por que usar Python? • Licença Open Source • Pouco punitiva: poucas regras arbitrárias; • Extensível (adicionar novos módulos) • C/C++ • Java (através Jython) • Extremamente portável • Unix/Linux, Windows, Mac, PalmOS, WindowsCE, RiscOS, VxWorks, QNX, OS/2, OS/390, AS/400, PlayStation, Sharp Zaurus, BeOS, VMS…

  8. História

  9. Breve História • Criada por Guido van Rossum em 1989 • no Centrum voor Wiskunde en Informatica (CWI), em Amsterdã,Holanda. • Linguagem de scripts para o sistema operacional distribuído Amoeba • Baseada na linguagem ABC, desenvolvida no CWI por Guido e outros nas décadas de 70 e 80. • O nome Python teve origem no grupo humorístico britânico Monty Python.

  10. Versões • 26 de janeiro de 1994 – versão 1.0 • 1998 – JPython • 16 de outubro de 2000 – versão 2.0 • 19 de setembro de 2006 – versão 2.5 (atual)

  11. Quem usa Python

  12. No Mundo • NASA (vários projetos) • Yahoo! (Yahoo mail & groups) • Apple, H.P., Microsoft • Muitas Universidades, como MIT, e Stanford

  13. Google • Sistema de ajuda do GMail • Google Groups • Sistema de compilação de aplicativos (build system). • Sistema de empacotamento e entrega de dados (packaging system). • Sistema de monitoramento e manutenção do cluster • Sistema de testes

  14. No Brasil • Jornal do Brasil, AOL Brasil • Embratel: monitoramento das interfaces de backbone e clientes de internet, também existem scripts de uso interno. • CPqD: monitoramento de centrais telefônicas. • Conectiva: Gerenciamento de pacotes da distribuição Linux e ferramentas de uso interno. • Async: desenvolvimento de software de automação comercial

  15. Características

  16. Compilada X Interpretada • Interpretada • Interpretador interativo • Compilador de byte code • compilação implícita e automática

  17. Paradigma • Orientada a Objetos • Suporte a outros paradigmas • Estrutural • Funcional • Fácil integração com outras linguagens

  18. Sistema de Tipos • Fortemente tipada • Objetos não podem mudar de tipo • Não há conversão automática de tipos • Tipagem dinâmica • Não há declaração de variáveis

  19. Outras • Poderosas estruturas de dados nativas • Listas • Dicionários • Identação para estrutura de bloco • Blocos demarcados por espaços print "O valor de a " if a == 0: print "zero" else: print a

  20. A Linguagem

  21. Comentários e Comentários Funcionais • Após o caractere “#” até o final da linha, tudo é considerado um comentário e ignorado, exceto pelos comentários funcionais. • Definindo a codificação do arquivo fonte • #−− coding: <encoding−name> −− • Em sistemas Posix pode-se usar o comentário funcional #!/usr/bin/env python para executar o arquivo com o comando python encontrado no ambiente. • Isto não é característico de Python, mas dos sistemas Posix.

  22. Indentação • Em Python, os blocos de código são delimitados pelo uso de indentação. • A indentação não precisa ser consistente em todo o arquivo, só no bloco de código. • Uma boa prática é ser consistente no projeto todo. • Cuidado ao misturar TAB e Espaços: configure seu editor!

  23. Variáveis • Tipagem dinâmica • uma variável não tem tipo fixo, ela tem o tipo do objeto que ela contém. • Não precisam ser declaradas • Variáveis são criadas quando atribuídas pela primeira vez • Variáveis devem ser atribuídas antes de serem referenciadas • “Tudo” é uma variável • Funções, classes, módulos ...

  24. Tipos de Dados • Variáveis Numéricas • Imutáveis num_int = 13 num_int_long = 13L num_real = 13.0

  25. Tipos de Dados • Strings • Imutáveis • Criação • texto1 = ‘abcdefghij ‘ • texto2 = “outro texto” • texto3 = ‘’’este texto tem varias linhas ‘’’

  26. Tipos de Dados • Strings • Acesso a elementos pelo índice texto1 = ‘abcdefghij ‘ print texto1 [ 2 ] # Imprime ’ c ’ print’GSB ’[ 1 ] # Imprime ’ S ’ • Principais Métodos: split, count, index, join, lower, upper, replace

  27. Tipos de Dados • Tuplas • Formadas por elementos de qualquer tipo • Delimitadas por parênteses. ‘(‘ e ‘)’ • Imutáveis • não se pode acrescentar apagar ou modificar valores • Vantagem: eficiente

  28. Tipos de Dados • Listas • Formadas por elementos de qualquer tipo • Criação • lista = [ 10 , 2 , 3 , ’texto’ , 20 ] • Acesso a elementos pelo índice • print lista [ 2 ] # imprime ’3 ’ • Principais Métodos: append, count, index, insert, pop, remove,reverse, sort

  29. Exercícios - Listas • Dado uma lista “lista”, verifique se “valor” está dentro dela, caso verdade imprima “Sim”, senão imprima “Não”. • Dado uma lista “lista”, itere sobre a lista, imprimindo cada um de seus elementos.

  30. Tipos de Dados • Dicionários • Formados por pares de chave-valor • Delimitados por chaves. ‘{‘ e ‘}’ d = { ’chave ’: ’valor ’ , ’linguagem ’: ‘python’ } • Chave sempre um valor Imutável! lista = [ 1 , 2 ] d[ lista ] = ’outro valor ’ #TypeError: list object are unhashable

  31. Tipos de Dados • Dicionários • Principais Métodos: copy, get, has_key, items, keys, update, values • Obtendo iteradores (otimizado para for): for chave in d.iterkeys (): print chave for valor in d.itervalues (): print valor for chave , valor in d.iteritems (): print chave , ‘=‘ , valor

  32. Exercícios - Dicionários • Crie um dicionário d e coloque nele seus dados: nome, idade, telefone,endereço. • Usando o dicionário d criado anteriormente, imprima seu nome. • Também usando d, imprima todos os itens do dicionário no formato chave : valor, ordenado pela chave.

  33. Controle de Fluxo if exp: #comandos else: #comandos if exp: #comandos elif exp: #comandos else: #comandos

  34. Controle de Fluxo • Os seguintes valores são considerados falsos: • None • False • Valor 0 de viários tipos: 0, 0.0, 0L, 0j • Seqüências vazias: ”, (), [] • Mapeamentos vazios • Instâncias de objetos que definam __nonzero__() que retorne valor False ou 0 • Instância de objetos que definem o __len__() o qual retorne 0.

  35. Estruturas de Repetição while exp: #comandos from time import time start = time () while time () - start < 3.0: print“ esperando ... “ for var in seq: #comandos for num in range(200): print num

  36. Estruturas de Repetição • Python fornece a cláusula else para os laços. • Será executada quando a condição do laço for falsa. for elemento in lista : if elemento == parada : break print elemento else : print" Laço chegou ao fim “ • No exemplo acima, a mensagem “Laço chegou ao fim” só é imprimida caso não existir um elemento que seja igual a “parada”.

  37. Exercícios - Estrutura de Repetição • Dada uma lista de palavras “lista” e uma palavra “chave” imprima o índice do elemento que encontrou a palavra, senão imprima “Palavra Não Encontrada”.

  38. Funções • Regra LGB • Referências buscam 3 escopos: local, global, built-in • Atribuições criam ou modificam nomes locais por default • Pode forçar argumentos a serem globais utilizando global • Exemplo x = 99 def func(y): z = x+y #x não é atribuído então é global return z func(1)

  39. Funções • É possível definir argumentos defaults que não precisam ser passados def func(a, b, c=10, d=100): print a, b, c, d >>> func(1,2) 1 2 10 100 >>> func(1,2,3,4) 1,2,3,4

  40. Funções • Número variável de argumentos • argumentos são passados para a função na forma de uma lista def arg_sem_nome ( * args ): for arg in args : print" arg :" , arg arg_sem_nome ( ’a’ , ’b’ , 123 )

  41. Funções • Número variável de argumentos • argumentos são passados para a função na forma de um dicionário, o nome do argumento é a chave def arg_com_nome ( ** kargs ): for nome , valor in kargs . iteritems (): print nome , "=" , valor arg_com_nome ( a=1 , b=2 , teste =123 )

  42. Módulos • Módulos são funções definidas em arquivos separados • Itens são importados utilizando from ou import from module import function function() import module module.function() • Módulos são “namespaces” • Podem ser utlizados para organizar nomes de variáveis. mod1.umValor = mod1.umValor - mod2.umValor

  43. Classes class A: atributo1 = 'atributo1 da classe A' atributo2 = 'atributo2 da classe A‘ def __init__(self, val_ini=1): " " " Construtor da classe A" " " self.atributo_de_instacia = val_ini def metodo (self): printself.atributo_de_instacia print A.atributo1

  44. Classes import datetime class Pessoa ( object ): def __init__ ( self , nome , nascimento ): self . nome = nome self . nascimento = nascimento def idade ( self ): delta = datetime . date . today () - self . nascimento return delta . days / 365 def __str__ ( self ): return’%s , % d anos ’ % ( self .nome , self . idade () )

  45. Classes • Atributos de Classe • São atributos que estão na classe, não na instância • São compartilhados entre todas as instâncias (economia de memória) • Os valores são instanciados/atribuídos ao ler a definição de classe • Úteis para casos como Jogos, onde uma imagem deve ser compartilhada por todos os personagens idênticos, economizando memória • Úteis para fazer “lock” em regiões críticas, evitar condições de corrida, etc...

  46. Classes • Atributos de classes class C( object ): l = [] c1 = C() c2 = C() c1.l.append ( 1 ) print c1.l # imprime [ 1 ] print c2.l # imprime [ 1 ] print C.l # imprime [ 1 ]

  47. Classes • Atributos Públicos e Privados • Nomenclatura define atributos/métodos públicos e privados • Privados: nomes que se iniciam com __ e não terminam com __. • Públicos: os outros nomes possíveis. • Convenciona-se que atributos/métodos que se iniciam e terminam com __ (portanto públicos) são de uso interno da classe, apesar de poderem ser utilizados pelo mundo externo.

  48. Classes • Propriedade • Escrita e leitura dos atributos class C( object ): def __init__ ( self ): self . __x = None def getX ( self ): returnself . __x def setX ( self , valor ): if isinstance ( valor , int ): self . __x = valor else : raise TypeError ( “x precisa ser inteiro !” ) x = property ( getX , setX ) c = C() c.x = 1 c.x = ’abc ’# TypeError : x precisa ser inteiro print c.x

  49. Exceções try: algumaCoisa() except: print ‘Erro’ else: # Será executado se quando não houver exceção outraCoisa()

  50. Exceções try: algumaCoisa() finally: # Será executado sempre! (com ou sem exceção) outraCoisa() # Podemos usar except ou finally, nunca os dois!

More Related