Minicurso Python "Revisão"

Minicurso Python "Revisão"

Minicurso realizado para as PyLadies São Carlos dia 09/04/2016 no DC/UFSCar

Este material aborda:
Tipos básicos: Números: int, float, decimal, Booleano, Strings
Controle de fluxo: if...elif...else
Iteração: for, while, range
Laços: break, continue, else e pass
Estruturas de dados: list e list comprehention, tuple, set e set comprehension, dict e dict comprehension
Generator expressions
Funções: Argumentos padrão, de palavra-chave, Empacotamento e desempacotamento de argumentos
Módulos: Como criar módulos, Módulos como script, Pacotes
Funcões embutidas (built-in functions)

Fd349405eaec4414ccf8720edea9b4fa?s=128

Luiz Menezes

April 09, 2016
Tweet

Transcript

  1. Minicurso Python "Revisão"

  2. 1. "Revisão" Python a. Tipos básicos: i. Números: int, float,

    decimal ii. Booleano iii. Strings b. Controle de fluxo i. if...elif...else ii. Iteração: for, while, range iii. Laços: break, continue, else e pass c. Estruturas de dados i. list e list comprehention ii. tuple iii. set e set comprehension iv. dict e dict comprehension v. Generator expressions "Revisão Python"
  3. "Revisão Python" 1. "Revisão" Python e. Funções i. Definindo funções

    ii. Argumentos padrão iii. Argumentos de palavra-chave iv. Empacotamento e desempacotamento de argumentos f. Módulos v. Como criar módulos vi. Módulos como script vii. Pacotes g. Funcões embutidas (built-in functions)
  4. 1. "Revisão" Python

  5. • [] list ◦ Declarar, acessar, iterar ◦ lista[-1] acessa

    o último item da lista Estrutura de dados Lista
  6. • Modificando a lista: ◦ list.append() ◦ list.pop() ◦ list.extend()

    ◦ list.remove() Estrutura de dados Lista
  7. Estrutura de dados Lista • Mais funções: ◦ len() ◦

    list.count() ◦ list.index() ◦ list.sort() vs sorted() ◦ list.reverse() vs reversed()
  8. Estrutura de dados Lista • Mais funções: ◦ len() ◦

    list.count() ◦ list.index() ◦ list.sort() e sorted() ◦ list.reverse() e reversed()
  9. • <list_reverseiterator object at aui37y3hf>???????/ • Mas que?!?!?!?? PARA, PARA,

    PARA, PARA, PARA PARA!!1!11!
  10. • Generators!!! (PEP255) ◦ Uma função (iterável) que produz uma

    sequência de valores sem necessariamente acessar uma coleção ◦ Um gerador gera valores, mas como? Parada "rápida" Generators
  11. • Generators (PEP255) ◦ Uma função é geradora se possui

    em seu corpo a palavra reservada yield Parada "rápida" Generators
  12. • Generators!!! (PEP255) ◦ Quando invocada a função geradora retorna

    um objeto gerador ◦ Python 3: objeto gerador possuir gerador.__next__() que é invocado por next(gerador) ◦ Python 2: gerador.next() Parada "rápida" Generators
  13. • Generators!!! (PEP255) ◦ Passo a passo Parada "rápida" Generators

  14. Estrutura de dados Lista • Soma (+) e multiplicação (*)

    de listas:
  15. Estrutura de dados Lista • Slices ◦ Jeito fácil de

    criar/acessar substrings ◦ Funciona para iteráveis acessáveis (tuplas, strings, listas, …) Nota: o comando del deleta: referências a variáveis, elementos e slices de listas.
  16. Estrutura de dados Lista • Slices ◦ Como ficam os

    índices no fateamento: +---+---+---+---+---+---+ | P | y | t | h | o | n | +---+---+---+---+---+---+ 0 1 2 3 4 5 6 -6 -5 -4 -3 -2 -1
  17. • PERIGO! CUIDADO! ◦ NÃO FAÇA ISSO EM LUGAR ALGUM!

    ◦ O operador '*' não foi feito para criar matriz desse jeito: Percebe Ivair a bugada do cavalo? Estrutura de dados Lista
  18. Estrutura de dados Lista • Jeito correto:

  19. • List Comprehension ◦ List comprehension: criando listas de um

    jeito fácil! ◦ Exemplo anterior usando list comprehension: Estrutura de dados Lista
  20. • List Comprehension ◦ Exemplos: Estrutura de dados Lista

  21. • List Comprehension ◦ Exemplos: Nota: Python 3 permite criar

    variáveis com acentos Estrutura de dados Lista
  22. • List Comprehension ◦ Deve ser usada apenas para gerar

    uma nova lista ◦ List comprehension não é uma forma de simplesmente fazer um for em uma linha ◦ Nunca fazer isso: ◦ Correto: Estrutura de dados Lista
  23. • Sequência de valores separados por vírgula Nota: a variável

    "_" na shell do python armazena o resultado da última operação Estrutura de dados Tupla
  24. • Imutável Estrutura de dados Tupla

  25. • Cuidado ao delcarar tuplas com 1 só elemento: Estrutura

    de dados Tupla
  26. • É possível usar += com tuplas • Mas tupla

    não é imutável? • Uma nova tupla é criada ao utilizar += Estrutura de dados Tupla
  27. • Exemplo com coordenadas (x, y) ◦ Jeito mais comum

    de trabalhar com coordenadas Estrutura de dados Tupla
  28. • collections.namedtuple ◦ namedtuple(typename, field_names[, verbose=False][, rename=False]) ◦ Cria uma

    subclasse de tupla com nome typename ◦ Acessível por índice ou field_name ◦ (verbose e rename são opcionais) Estrutura de dados Tupla bombada
  29. • collections.namedtuple ◦ Acessível por índice ou field_name Estrutura de

    dados Tupla bombada
  30. • Conjuntos: direto da teoria matemática ◦ Não permite elementos

    duplicados ◦ {} cria dict e não set vazio ◦ Set vazio é criado com set() Estrutura de dados Conjunto
  31. • Eficiente para verificar pertencimento • Não mantém a ordem

    dos elementos Estrutura de dados Conjunto
  32. • Conjunto não é acessável Estrutura de dados Conjunto

  33. • Operações de conjunto: ◦ Diferença (-) ◦ Diferença simétrica

    (^) ◦ Intercecção (&) ◦ União (|) Estrutura de dados Conjunto
  34. • Operações de conjunto: ◦ União (|) Estrutura de dados

    Conjunto
  35. • Operações de conjunto: ◦ Intercecção (&) ◦ Diferença (-)

    ◦ Diferença simétrica (^) Estrutura de dados Conjunto
  36. • Set comprehension Estrutura de dados Conjunto

  37. • {} dict ◦ Estrutura padrão de mapeamento ◦ Indexado

    por chaves ◦ Chaves podem ser de quaisquer tipos imutáveis ◦ Não mantém ordem (por eficiência) Estrutura de dados Dicionário
  38. • Exemplo ◦ Acesso, modificar valor, remover elemento Estrutura de

    dados Dicionário
  39. • Chaves: dict.keys() • Items: dict.items() • Valores: dict.values() Estrutura

    de dados Dicionário
  40. • Iterando Estrutura de dados Dicionário

  41. • Ordenando ◦ Por chave ◦ Por valor Nota: para

    ordernar de forma decrescente usar reversed() Estrutura de dados Dicionário
  42. • itemgetter??? from operator import itemgetter??? • Mas que?!?!?!?? PARA,

    PARA, PARA, PARA, PARA PARA!!1!11!
  43. • operator ◦ Módulo da biblioteca padrão do Python ◦

    Implementa operadores como funções com foco na eficiência • itemgetter() ◦ Função do módulo operator ◦ Acessa iteráveis ◦ Eficiente Parada rápida operator.itemgetter()
  44. • Dict comprehension ◦ Maneira fácil de criar dicionários ◦

    Jeito elegante de inverter um dict Estrutura de dados Dicionário
  45. • Genexp (PEP0289) ◦ Cria um gerador a partir de

    uma expressão ◦ Ideal para se passar para outras funções Estrutura de dados Generator Expression
  46. • def define uma função • Seguida por parametros separados

    por vírgula (,) Funções Função
  47. • Possui docstring (Documentation String) ◦ Definido por """ docstring

    """ no começo da função Funções Função
  48. Funções Funções são objetos! • É possível acessar métodos e

    atributos, atribuir a variáveis, etc. Nota: a função dir() retorna os atributos do objeto passado
  49. • Python é dinâmica: ◦ É possível acessar em tempo

    de execução: ▪ Nomes das variáveis da função ▪ Nome real da função ▪ Bytecode Nota: o python permite atribuição múltipla, conforme a 2a linha do exemplo ao lado Funções Funções são objetos!
  50. Funções Funções são objetos! • Python é dinâmica: ◦ Bytecode

  51. Funções Argumentos • Default arguments ◦ Valores padrões dos argumentos

  52. Funções Argumentos • Default arguments ◦ Ao invocar uma função

    com argumentos padrão é proibido chamar argumentos posicionais após argumentos de palavra-chave. Fazer isso causa SyntaxError: ◦ Forma correta:
  53. Funções Argumentos • Default arguments ◦ open() da bilbioteca padrão

    open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
  54. • Mexendo com arquivo? • Com esse monte de .close()????

    • Dá uma olhada no próximo slide PARA, PARA, PARA, PARA, PARA PARA!!1!11!
  55. • Define o contexto de execução quando um with é

    executado • Exemplo: ◦ Abrir/fechar arquivo ◦ Ao entrar no contexto (linha do with) o arquivo é aberto e associado a variável arq. ◦ Ao sair do contexto o arquivo é fechado automaticamente Parada rápida Context Manager / Contexto Gerenciado
  56. Funções Argumentos • Default arguments ◦ CUIDADO! ◦ Os argumentos

    padrões são resolvidos apenas uma vez, portanto a lista no exemplo seguinte é criada apenas uma vez
  57. Funções Argumentos • Default arguments ◦ CUIDADO! ◦ Jeito correto:

    ▪ Toda vez que a função for executada uma nova lista é criada
  58. Funções Argumentos • Keyword arguments (kwargs) ◦ É possível chamar

    funções com as palavras-chave dos argumentos ◦ Segue a forma kwarg=True ◦ Keywords arguments são uma ótima maneira de aumentar a legibilidade do código ◦ Cuidados: ▪ As palavras-chaves devem estar de acordo com os nomes dos argumentos da função. Caso contrário ocorrerá uma exceção TypeError ▪ Chamar argumentos posicionais após argumentos de palavra-chave ocasionará em uma exceção do tipo SyntaxError
  59. Funções Argumentos • Keyword arguments ◦ Exemplo

  60. Funções Argumentos • Empacotamento de argumentos em lista ◦ Função

    é chamada com uma quantidade arbitrária de argumentos
  61. Funções Argumentos • Empacotamento de argumentos em lista ◦ Argumentos

    arbitrários são empacotados em uma tupla ◦ Esse empacotamento é representado por * ▪ No exemplo: *numeros ◦ Comumente os argumentos arbritários aparecem como *args, mas pode ser usado *numeros, *palavras, *etc
  62. Funções Argumentos • Empacotamento de argumentos em dicionário ◦ Argumentos

    arbitrários são empacotados em um dict ◦ Esse empacotamento é representado por: ▪ Default arguments ▪ **kwargs como último parâmetro da função, assim como *args
  63. Funções Argumentos • Dicionário de argumentos arbitrários ◦ str.format(*args, **kwargs)

  64. Funções Argumentos • Desempacotamento de argumentos (unpacking) ◦ Contrário do

    empacotamento de argumentos arbitrários
  65. Módulos Módulos? • Um arquivo contendo código Python • Nome

    do módulo é o <nome_do_arquivo>.py • O nome do módulo é guardado na variável __name__
  66. • Por exemplo o arquivo vetor.py Nota: por conveção operadores

    infixos não devem modificar os operandos. Por isso é retornado uma nova instância de vetor no exemplo dado. Módulos Exemplo
  67. • Executando a shell na mesma pasta do vetor.py: Módulos

    Exemplo
  68. • Importando de uma maneira melhor: Módulos Exemplo

  69. • O módulo é executado apenas uma vez quano importado

    • Cada módulo possui seu próprio escopo de variáveis. • É possível declarar variáveis globais no módulo sem se preocupar com colisões Módulos Adendo
  70. • python vetor.py <argumentos> • O código será executado assim

    como quando importado, mas a variável __name__ terá o valor "__main__" • Para seu código ser usável como script e módulo importável, use o trecho a seguir: if __name__ == "__main__": ... Módulos Módulos como scripts
  71. • Exemplo Módulos Módulos como scripts

  72. • Exemplo Módulos Pacotes

  73. • As funções embutidas sempre estão disponíveis para uso •

    São funções que realizam operações comuns Funções embutidas Built-in functions
  74. • Tipos: ◦ bin() binário ◦ bool() ◦ bytearray() ◦

    bytes() ◦ chr() int para caracter ◦ complex() número complexo ◦ dict() ◦ float() ◦ frozenset() ◦ hex() hexadecimal Funções embutidas Built-in functions
  75. • Tipos: ◦ int() ◦ list() ◦ memoryview() ◦ object()

    objeto mais básico ◦ oct() octal ◦ ord() caracter para int ◦ set() ◦ str() ◦ tuple() Funções embutidas Built-in functions
  76. • Matemáticas: ◦ abs(a) |a| ◦ divmod(a, b) (a //

    b, a % b) ◦ pow(a, b) a ^ b (ou a ** b) ◦ round(a, b) arredonda a pra b casas ◦ sum(A) soma dos elementos iterável A ◦ min(A) menor elemento de A ◦ max(A) maior elemento de A Funções embutidas Built-in functions
  77. • Ação sobre iteráveis: ◦ all() ◦ any() ◦ enumerate()

    ◦ iter() ◦ len() ◦ next() ◦ reversed() ◦ slice() ◦ sorted() ◦ zip() Funções embutidas Built-in functions
  78. • Ação sobre iteráveis: ◦ all() ◦ any() ◦ enumerate()

    ◦ iter() ◦ len() ◦ next() ◦ reversed() ◦ slice() ◦ sorted() ◦ zip() Funções embutidas Built-in functions
  79. • Utilidade: ◦ eval() ◦ exec() ◦ dir() ◦ format()

    ◦ hash() ◦ help() ◦ id() ◦ range() ◦ type() Funções embutidas Built-in functions
  80. • Variávies: ◦ globals() ◦ locals() ◦ vars() Funções embutidas

    Built-in functions
  81. • Entrada/Saída ◦ input() ◦ open() ◦ print() Funções embutidas

    Built-in functions
  82. • Programação funcional ◦ filter() ◦ map() Funções embutidas Built-in

    functions