A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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

Apresentações semelhantes


Apresentação em tema: "Python Andrea Menezes (afm3) Maíra Nascimento (mcn2)"— Transcrição da apresentação:

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 – JPython 16 de outubro de 2000 – versão 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: −− 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 for var in seq: #comandos for num in range(200): print num while exp: #comandos from time import time start = time () while time () - start < 3.0: print “ esperando... “

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) >>> 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): print self.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 ): return self. __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!

51 Arquivos Lendo todo o conteúdo para a memória: arquivo = open ( ’nome_arq.txt ’ ) conteudo = arquivo.read () arquivo.close () Lendo todas as linhas para a memória (lista): arquivo = open ( ’nome_arq.txt ’ ) linhas = arquivo.readlines () arquivo.close () Lendo uma quantidade específica de bytes: arquivo = open ( ’nome_arq.txt ’ ) comeco = arquivo.read ( 20 ) # 20 primeiros bytes arquivo.close ()

52 Arquivos Lendo com laços: arquivo = open ( ’nome_arq.txt ’ ) # idêntico a arquivo.readlines() for linha in arquivo : print linha arquivo = open ( ’nome_arq.txt ’ ) while True : linha = arquivo.readline () if linha == “”: break print linha

53 Exercícios - Contador de Palavras Pedir Arquivo Ler Arquivo Contar quantas vezes aparece cada palavra Listar as palavras em ordem alfabética, junto com o seu número de repetições no texto

54 Referências Python Language Reference  Python Library Reference  Python Tutorial  Python Brasil 


Carregar ppt "Python Andrea Menezes (afm3) Maíra Nascimento (mcn2)"

Apresentações semelhantes


Anúncios Google